<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_遇见未知的自己</title><subtitle type="text">学习记录</subtitle><id>http://feed.cnblogs.com/blog/u/41664/rss</id><updated>2012-02-04T10:33:56Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/41664/rss"/><entry><id>http://www.cnblogs.com/hll2008/archive/2012/01/09/2316846.html</id><title type="text">我的android阅读软件“微读”v2.2又发布，加入微美图、微漫画、微美女阅读</title><summary type="text">我只能说“微读”2.2版本又发布了，首先还是感谢大家使用我的软件，只要还有人愿意用我会不断的升级更新，希望做一个简单优秀的软件。新版加入了一些个性的在线内容阅读，微美图、微漫画、微美女阅读。新版体验地址微读软件：点击下载网站：http://www.app1001.com/新浪微博：@easy微读v1.0版本功能（已经上线）：1、支持本地txt格式小说阅读v2.0版本功能（已经上线）：1、支持本地txt格式小说阅读2、新浪微博的阅读v2.2版本功能（已经上线）：1、支持本地txt格式小说阅读2、新浪微博的阅读3、微美图阅读4、微漫画阅读5、微美女阅读计划（继续开发中）：1、加入更多的在线内容2、</summary><published>2012-01-09T02:33:00Z</published><updated>2012-01-09T02:33:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2012/01/09/2316846.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2012/01/09/2316846.html"/><content type="html">&lt;p&gt;&lt;span&gt;我只能说&amp;ldquo;微读&amp;rdquo;2.2版本又发布了，首先还是感谢大家使用我的软件，只要还有人愿意用我会不断的升级更新，希望做一个简单优秀的软件。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;新版加入了一些个性的在线内容阅读，微美图、微漫画、微美女阅读。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;新版体验地址&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;微读软件：&lt;span&gt;&lt;span&gt;&lt;a href="http://www.app1001.com/api/DownApk.ashx"&gt;点击下载&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;网站：&lt;span&gt;&lt;a href="http://www.app1001.com/" target="_blank"&gt;http://www.app1001.com/&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;新浪微博：&lt;span&gt;&lt;a href="http://weibo.com/easyweidu" target="_blank"&gt;&lt;span&gt;@easy微读&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;v1.0版本功能（已经上线）：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、支持本地txt格式小说阅读&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;v2.0版本功能（已经上线）：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、支持本地txt格式小说阅读&lt;/p&gt;&#xD;
&lt;p&gt;2、新浪微博的阅读&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;v2.2版本功能（已经上线）：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、支持本地txt格式小说阅读&lt;/p&gt;&#xD;
&lt;p&gt;2、新浪微博的阅读&lt;/p&gt;&#xD;
&lt;p&gt;3、微美图阅读&lt;/p&gt;&#xD;
&lt;p&gt;4、微漫画阅读&lt;/p&gt;&#xD;
&lt;p&gt;5、微美女阅读&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;计划&lt;strong&gt;（继续开发中）&lt;/strong&gt;：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、加入更多的在线内容&lt;/p&gt;&#xD;
&lt;p&gt;2、加入特色内容阅读&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;微读v2.2功能介绍&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里还是先截图介绍一下2.2新增加的新浪微博阅读功能，让大家先睹为快，有图有真相，具体的大家可以点击上面的地址下载一个安装试试了。&lt;/p&gt;&#xD;
&lt;p&gt;关于原来功能&lt;/p&gt;&#xD;
&lt;p&gt;介绍可以参看：&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/11/27/2265248.html" target="_blank"&gt;《我的android阅读软件&amp;ldquo;微读&amp;rdquo;-做最简单的手机阅读软件》&lt;/a&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/12/28/2303688.html" target="_blank"&gt;《我的android阅读软件&amp;ldquo;微读&amp;rdquo;v2.0发布，加入新浪微博的支持》&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;1、首页截图，现在支持的类型:txt小说、新浪微博、微美图、微漫画、微美女，新增加微美图、微漫画、微美女都需要有新浪微博账号才能阅读&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/38096/2012010910252170.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2012/38096/2012010910272647.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2、微美图列表和内容页面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/38096/2012010910281746.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2012/38096/2012010910283041.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2、微美内容页面和评论页面，支持左右拖拽操作，在微漫画和微美女中也支持同样操作&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/38096/2012010910292047.jpg" alt="" /&gt;&amp;nbsp;&amp;nbsp;&lt;img style="border-style: initial; border-color: initial;" src="http://pic002.cnblogs.com/images/2012/38096/2012010910292848.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3、微漫画列表和内容页面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/38096/2012010910302755.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2012/38096/2012010910303750.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4、微美女列表和内容页面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/38096/2012010910310459.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2012/38096/2012010910311251.jpg" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2316846.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2012/01/09/2316846.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hll2008/archive/2011/12/28/2303688.html</id><title type="text">我的android阅读软件“微读”v2.0发布，加入新浪微博的支持</title><summary type="text">破茧成蝶~！！！ “微读”2.0正式发布,今天刚刚好是12月27号，真的很巧合，v1.0版本是11月27号发布的，刚刚好一个月时间，从中得到了很多的支持和意见，感谢大家使用我的软件，只要还有人愿意用我会不断的升级更新，希望做一个简单优秀的软件。新版体验地址微读软件：点击下载网站：http://www.app1001.com/新浪微博：@easy微读v1.0版本功能（已经上线）：1、支持本地txt格式小说阅读v2.0版本功能（已经上线）：1、支持本地txt格式小说阅读2、新浪微博的阅读计划（继续开发中）：1、加入更多的在线内容2、加入特色内容阅读微读v2.0功能介绍这里主要先截图介绍一下2.0新</summary><published>2011-12-28T02:02:00Z</published><updated>2011-12-28T02:02:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2011/12/28/2303688.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2011/12/28/2303688.html"/><content type="html">&lt;p&gt;&lt;span&gt;破茧成蝶~！！！ &amp;ldquo;微读&amp;rdquo;2.0正式发布,今天刚刚好是12月27号，真的很巧合，v1.0版本是11月27号发布的，刚刚好一个月时间，从中得到了很多的支持和意见，感谢大家使用我的软件，只要还有人愿意用我会不断的升级更新，希望做一个简单优秀的软件。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;新版体验地址&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;微读软件：&lt;span&gt;&lt;span&gt;&lt;a href="http://www.app1001.com/api/DownApk.ashx"&gt;点击下载&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;网站：&lt;span&gt;&lt;a href="http://www.app1001.com/" target="_blank"&gt;http://www.app1001.com/&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;新浪微博：&lt;span&gt;&lt;a href="http://weibo.com/easyweidu" target="_blank"&gt;&lt;span&gt;@easy微读&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;v1.0版本功能（已经上线）：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、支持本地txt格式小说阅读&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;v2.0版本功能（已经上线）：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、支持本地txt格式小说阅读&lt;/p&gt;&#xD;
&lt;p&gt;2、新浪微博的阅读&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;计划&lt;strong&gt;（继续开发中）&lt;/strong&gt;：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、加入更多的在线内容&lt;/p&gt;&#xD;
&lt;p&gt;2、加入特色内容阅读&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;微读v2.0功能介绍&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里主要先截图介绍一下2.0新增加的新浪微博阅读功能，让大家先睹为快，有图有真相，具体的大家可以点击上面的地址下载一个安装试试了。&lt;/p&gt;&#xD;
&lt;p&gt;关于txt文件阅读介绍可以参看：&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/11/27/2265248.html" target="_blank"&gt;《我的android阅读软件&amp;ldquo;微读&amp;rdquo;-做最简单的手机阅读软件》&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1、首页和菜单设置页，可以添加新浪微博账号和txt书籍，支持设置代理上网&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716004877.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716050638.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2、微博主页，独特的旋转菜单，可以展开可以收起，点击原型菜单进行功能切换&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img style="border-style: initial; border-color: initial;" src="http://pic002.cnblogs.com/images/2011/38096/2011122716062624.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716061594.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716105367.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3、微博个人信息页面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716144939.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716150436.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;4、微博个人资料页面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716161044.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716202315.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;5、微博更多功能页面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716164676.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716165544.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;6、微博详细内容浏览页面，可以直接点击展开查看评论&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716182697.jpg" alt="" /&gt;&amp;nbsp;&lt;img style="border-style: initial; border-color: initial;" src="http://pic002.cnblogs.com/images/2011/38096/2011122716190857.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;7、微博发布功能页面&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716213146.jpg" alt="" /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011122716214029.jpg" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2303688.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/12/28/2303688.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hll2008/archive/2011/11/28/2266672.html</id><title type="text">自定义实现类似android主界面的滑屏换屏控件</title><summary type="text">今天讲一下我开发“微读”阅读软件中实现的一个类似android主界面的滑屏控件，这个滑屏在微读的主界面和看书时左右滑平翻页中都有用到，在具体的应用效果如下：下载到手机中体验一下微读软件：点击下载网站：http://www.app1001.com/新浪微博：@easy微读直接效果图 ，更多内容可以参看：我的android阅读软件“微读”-做最简单的手机阅读软件 实现思路，刚开始的时候我是用ViewFlipper控件来做非常的简单但是实现不了拖拽移动屏幕的效果，最终放弃决定自定义一个控件实现这样效果。接下来我详细的解说一下我开发时写的这个实验demo，软件中用的滑屏就是由这样的代码实现的。 ...</summary><published>2011-11-28T13:07:00Z</published><updated>2011-11-28T13:07:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2011/11/28/2266672.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2011/11/28/2266672.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 16px;"&gt;今天讲一下我开发&amp;ldquo;微读&amp;rdquo;阅读软件中实现的一个类似android主界面的滑屏控件，这个滑屏在微读的主界面和看书时左右滑平翻页中都有用到，在具体的应用效果如下：&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;下载到手机中体验一下&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;微读软件：&lt;span style="color: #0000ff;"&gt;&lt;span style="color: #0000ff;"&gt;&lt;a href="http://www.app1001.com/api/DownApk.ashx"&gt;点击下载&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;网站：&lt;span style="color: #0000ff;"&gt;&lt;a href="http://www.app1001.com/" target="_blank"&gt;http://www.app1001.com/&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;新浪微博：&lt;span style="color: #0000ff;"&gt;&lt;span style="color: #0000ff;"&gt;&lt;a href="http://weibo.com/easyweidu" target="_blank"&gt;@easy微读&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;直接效果图 ，更多内容可以参看：&lt;span style="color: #0000ff;"&gt;&lt;a id="homepage1_HomePageDays_DaysList_DayItem_0_DayList_0_TitleUrl_0"  href="http://www.cnblogs.com/hll2008/archive/2011/11/27/2265248.html"&gt;&lt;span style="color: #0000ff;"&gt;我的android阅读软件&amp;ldquo;微读&amp;rdquo;-做最简单的手机阅读软件&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112820231161.png" alt="" /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112820232562.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;实现思路，刚开始的时候我是用ViewFlipper控件来做非常的简单但是实现不了拖拽移动屏幕的效果，最终放弃决定自定义一个控件实现这样效果。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;接下来我详细的解说一下我开发时写的这个实验demo，软件中用的滑屏就是由这样的代码实现的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;首先新建一个控件类TouchPageView并且继承自ViewGroup，左右滑动换屏我的实现是在TouchPageView添加3个子view分别代表看不到的左边屏幕、可以看到的中间屏幕、看不到的右边屏幕，这样在滑屏时候就可以通过不断调整这3个view的位置实现连续不间断滑屏换屏，下面的实验中我分别把3个view设置成红色、绿色、黄色这样切换的时候可以看到明显效果，这3个view在TouchPageView的构造方法中调用init方法进行初始化：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="font-size: 16px;"&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; init()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        views= &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ArrayList&amp;lt;LinearLayout&amp;gt;();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        view1=&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; LinearLayout(context);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        view1.setBackgroundColor(Color.YELLOW);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.addView(view1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        TextView tv=&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; TextView(context);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        tv.setText("测试");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        view1.addView(tv);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        views.add(view1);&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        view2=&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; LinearLayout(context);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        view2.setBackgroundColor(Color.RED);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.addView(view2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        views.add(view2);&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        view3=&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; LinearLayout(context);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        view3.setBackgroundColor(Color.GREEN);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.addView(view3);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        views.add(view3);&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; ViewConfiguration configuration = ViewConfiguration.get(getContext());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    }&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;接下来的实现是关键，重写onLayout方法对3个view的显示位置布局进行控制，通过下面的这个方法，把3个view进行水平一个跟着一个进行布局显示。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="font-size: 16px;"&gt;@Override&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; onLayout(&lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; changed, &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; l, &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; t, &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; r, &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; b) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; childLeft = -1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; count = views.size();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;水平从左到右放置&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; count; i++) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; View child =views.get(i);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (child.getVisibility() != View.GONE) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; childWidth = child.getMeasuredWidth();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(childLeft==-1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    childLeft=-childWidth;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                childLeft += childWidth;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        }&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    }&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3个view位置放置好之后，接下来的实现实现手指在屏幕拖拽滑动时让3个view跟着手指的位置进行变化显示，这个肯定是在onTouchEvent方法中实现了，分别在MotionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE、MotionEvent.ACTION_UP三个手指状态中进行控制，在下面的实现中还采用了VelocityTracker的方法对手指的滑动速度进行跟踪，这样根据滑动速度决定屏幕往哪个方向换屏，关键的代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="font-size: 16px;"&gt;@Override&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; onTouchEvent(MotionEvent ev){&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(!lock)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (mVelocityTracker == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                mVelocityTracker = VelocityTracker.obtain();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            mVelocityTracker.addMovement(ev);&lt;/span&gt;&lt;br /&gt;            &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; action = ev.getAction();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;float&lt;/span&gt; x = ev.getX();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;float&lt;/span&gt; y = ev.getY();&lt;/span&gt;&lt;br /&gt;            &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt; (action) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; MotionEvent.ACTION_DOWN:&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;按下去&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(touchState==TOUCH_STATE_REST)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;记录按下去的的x坐标&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                    lastMotionX = x;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    touchState=TOUCH_STATE_MOVING;&lt;/span&gt;&lt;br /&gt;                    &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    isMoved=&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                }&lt;/span&gt;&lt;br /&gt;                &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; MotionEvent.ACTION_MOVE:&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;拖动时&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(touchState==TOUCH_STATE_MOVING)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    &lt;span style="color: #0000ff;"&gt;float&lt;/span&gt; offsetX=x-lastMotionX;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    &lt;span style="color: #0000ff;"&gt;float&lt;/span&gt; offsetY=y-lastMotionY;&lt;/span&gt;&lt;br /&gt;                    &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(isMoved)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        lastMotionX=x;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        lastMotionY=y;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; count = views.size();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;水平从左到右放置&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                        &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; count; i++) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; View child =views.get(i);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (child.getVisibility() != View.GONE) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                                &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; childWidth = child.getMeasuredWidth();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                                &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; childLeft = child.getLeft()+(&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;)offsetX;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                                child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                                childLeft += childWidth;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(Math.abs(offsetX)&amp;gt;TOUCH_SLOP||Math.abs(offsetY)&amp;gt;TOUCH_SLOP)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;移动超过阈值，则表示移动了&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                        isMoved=&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        removeCallbacks(mLongPressRunnable);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                }&lt;/span&gt;&lt;br /&gt;                &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; MotionEvent.ACTION_UP:&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;放开时&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;释放了&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                removeCallbacks(mLongPressRunnable);&lt;/span&gt;&lt;br /&gt;                &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(isMoved)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(touchState==TOUCH_STATE_MOVING)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        touchState=TOUCH_STATE_SLOWING;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; sign=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; VelocityTracker velocityTracker = mVelocityTracker;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;计算当前速度&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                        velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;x方向的速度&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                        &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; velocityX = (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;) velocityTracker.getXVelocity();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(velocityX &amp;gt; SNAP_VELOCITY)&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;足够的能力向左&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            sign=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            Log.e("enough to move left", "true");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (velocityX &amp;lt; -SNAP_VELOCITY)&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;足够的能力向右&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            sign=-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            Log.e("enough to move right", "right");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 16px;"&gt;                        else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            sign=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        moveToFitView(sign);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (mVelocityTracker != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            mVelocityTracker.recycle();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                            mVelocityTracker = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                        }&lt;/span&gt;&lt;br /&gt;                        &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                }&lt;/span&gt;&lt;br /&gt;                &lt;br /&gt;                &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    }&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;完成手指滑的功能后，最后在手指离开屏幕的时候，让3个view滑动到合适的位置，保证当前屏幕只能看到一个完整的view另外2个view不可见，并且在滑动的过程中为了达到比较自然的效果，采用减速滑动的实现，这里是用了Handler进行间隔的减速移动效果，这样滑动起来比较舒服，其实最好的效果应该加入阻尼效果，就是让view一定程度的冲过屏幕边界然后在回弹，经过几次这样的缓减至速度为零然后最终停止，这个可以由各位自己去实现，并不难写。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="font-size: 16px;"&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; offset=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; moveToFitView(&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; sign)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;boolean&lt;/span&gt; b=swapView(sign);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            View view1=views.get(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; left=view1.getLeft();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;int offset=0;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(left!=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                offset=-1*left;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;            &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            moveView();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    }&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    FlipAnimationHandler mAnimationHandler;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; ovv=40;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; moveView()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; count = views.size();&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(offset!=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; ov=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(offset&amp;gt;0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                ov=ovv; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 16px;"&gt;            else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                ov=-1*ovv;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            ovv=ovv-3;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(ovv&amp;lt;1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                ovv=3;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(Math.abs(offset)&amp;lt;Math.abs(ov))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                ov=offset;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                offset=0;&lt;/span&gt;&lt;br /&gt;                &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 16px;"&gt;            else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                offset=offset-ov;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;            &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;水平从左到右放置&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; count; i++) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; View child =views.get(i);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                &lt;span style="color: #0000ff;"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; childWidth = child.getMeasuredWidth();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; childLeft = child.getLeft()+ov;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                childLeft += childWidth;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;            &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(mAnimationHandler==&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;                mAnimationHandler = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; FlipAnimationHandler();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            mAnimationHandler.sleep(1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff; font-size: 16px;"&gt;        else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            ovv=40;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            touchState=TOUCH_STATE_REST;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    }&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; FlipAnimationHandler &lt;span style="color: #0000ff;"&gt;extends&lt;/span&gt; Handler {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        @Override&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; handleMessage(Message msg) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            TouchPageView.&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.moveView();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; sleep(&lt;span style="color: #0000ff;"&gt;long&lt;/span&gt; millis) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.removeMessages(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;            sendMessageDelayed(obtainMessage(0), millis);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px;"&gt;    }&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;整个自定义控件核心的思路和代码就上面这些了，实现效果请参看我的微读效果。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;完整的代码：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;package xx.weidu;&#xD;
&#xD;
import java.util.ArrayList;&#xD;
import java.util.List;&#xD;
&#xD;
import android.content.Context;&#xD;
import android.graphics.Canvas;&#xD;
import android.graphics.Color;&#xD;
import android.os.Handler;&#xD;
import android.os.Message;&#xD;
import android.util.Log;&#xD;
import android.view.MotionEvent;&#xD;
import android.view.VelocityTracker;&#xD;
import android.view.View;&#xD;
import android.view.ViewConfiguration;&#xD;
import android.view.ViewGroup;&#xD;
import android.widget.LinearLayout;&#xD;
import android.widget.TextView;&#xD;
&#xD;
public class TouchPageView extends ViewGroup{&#xD;
&#xD;
	private LinearLayout view1;&#xD;
	private LinearLayout view2;&#xD;
	private LinearLayout view3;&#xD;
	&#xD;
&#xD;
	//速度跟踪&#xD;
	private VelocityTracker mVelocityTracker;&#xD;
	private int mMaximumVelocity;&#xD;
	&#xD;
	//手势临界速度，当速度超过这个时切换到下一屏&#xD;
    private static final int SNAP_VELOCITY = 100;&#xD;
    &#xD;
    //停止状态&#xD;
	private final static int TOUCH_STATE_REST = 0;&#xD;
    //滚动状态&#xD;
	private final static int TOUCH_STATE_MOVING = 1;&#xD;
	//减速停止状态&#xD;
	private final static int TOUCH_STATE_SLOWING = 2;&#xD;
	&#xD;
	//当前触摸状态&#xD;
	private int touchState = TOUCH_STATE_REST;&#xD;
    &#xD;
	private boolean lock=false;&#xD;
	&#xD;
	private float lastMotionX;&#xD;
    private float lastMotionY;&#xD;
    &#xD;
	private Context context;&#xD;
	private List&amp;lt;LinearLayout&amp;gt; views;&#xD;
	//是否移动了&#xD;
	private boolean isMoved;&#xD;
	//长按的runnable&#xD;
    private Runnable mLongPressRunnable;&#xD;
	//移动的阈值&#xD;
	private static final int TOUCH_SLOP=10;&#xD;
	&#xD;
    public int width;&#xD;
	&#xD;
	public int height;&#xD;
	&#xD;
	public TouchPageView(Context context) {&#xD;
		super(context);&#xD;
		this.context=context;&#xD;
		init();&#xD;
	}&#xD;
	&#xD;
	private void init()&#xD;
	{&#xD;
		views= new ArrayList&amp;lt;LinearLayout&amp;gt;();&#xD;
		view1=new LinearLayout(context);&#xD;
		view1.setBackgroundColor(Color.YELLOW);&#xD;
		this.addView(view1);&#xD;
		TextView tv=new TextView(context);&#xD;
		tv.setText("测试");&#xD;
		view1.addView(tv);&#xD;
		views.add(view1);&#xD;
		&#xD;
		&#xD;
		view2=new LinearLayout(context);&#xD;
		view2.setBackgroundColor(Color.RED);&#xD;
		this.addView(view2);&#xD;
		views.add(view2);&#xD;
		&#xD;
		view3=new LinearLayout(context);&#xD;
		view3.setBackgroundColor(Color.GREEN);&#xD;
		this.addView(view3);&#xD;
		views.add(view3);&#xD;
		&#xD;
		final ViewConfiguration configuration = ViewConfiguration.get(getContext());&#xD;
		mMaximumVelocity = configuration.getScaledMaximumFlingVelocity();&#xD;
	}&#xD;
	&#xD;
	&#xD;
	@Override&#xD;
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){&#xD;
    	super.onMeasure(widthMeasureSpec, heightMeasureSpec);&#xD;
        final int count = views.size();&#xD;
        for (int i = 0; i &amp;lt; count; i++) {&#xD;
            final View child =views.get(i);&#xD;
            child.measure(widthMeasureSpec,heightMeasureSpec);&#xD;
        }&#xD;
        &#xD;
        int finalWidth, finalHeight;&#xD;
		finalWidth = measureWidth(widthMeasureSpec);&#xD;
		finalHeight = measureHeight(heightMeasureSpec);&#xD;
&#xD;
        this.width=finalWidth;&#xD;
		this.height=finalHeight;&#xD;
&#xD;
	}&#xD;
	&#xD;
	private int measureWidth(int measureSpec) {&#xD;
		int result = 0;&#xD;
		int specMode = MeasureSpec.getMode(measureSpec);&#xD;
		int specSize = MeasureSpec.getSize(measureSpec);&#xD;
&#xD;
		if (specMode == MeasureSpec.EXACTLY) {&#xD;
			result = specSize;&#xD;
		} else {&#xD;
			result = specSize;&#xD;
		}&#xD;
&#xD;
		return result;&#xD;
	}&#xD;
	&#xD;
	private int measureHeight(int measureSpec) {&#xD;
		int result = 0;&#xD;
		int specMode = MeasureSpec.getMode(measureSpec);&#xD;
		int specSize = MeasureSpec.getSize(measureSpec);&#xD;
&#xD;
		if (specMode == MeasureSpec.EXACTLY) {&#xD;
			result = specSize;&#xD;
		} else {&#xD;
			result = specSize;&#xD;
		}&#xD;
		return result;&#xD;
	}&#xD;
&#xD;
	@Override&#xD;
	protected void onLayout(boolean changed, int l, int t, int r, int b) {&#xD;
		int childLeft = -1;&#xD;
        final int count = views.size();&#xD;
        //水平从左到右放置&#xD;
        for (int i = 0; i &amp;lt; count; i++) {&#xD;
            final View child =views.get(i);&#xD;
            if (child.getVisibility() != View.GONE) {&#xD;
                final int childWidth = child.getMeasuredWidth();&#xD;
                if(childLeft==-1)&#xD;
                {&#xD;
                	childLeft=-childWidth;&#xD;
                }&#xD;
                child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());&#xD;
                childLeft += childWidth;&#xD;
            }&#xD;
        }&#xD;
		&#xD;
	}&#xD;
	&#xD;
	//绘制子元素&#xD;
    @Override&#xD;
	protected void onDraw(Canvas canvas) {&#xD;
    	//水平从左到右放置&#xD;
    	int count = views.size();&#xD;
        for (int i = 0; i &amp;lt; count; i++) {&#xD;
            View child =views.get(i);&#xD;
            drawChild(canvas, child, getDrawingTime());&#xD;
        }&#xD;
    }&#xD;
&#xD;
	@Override&#xD;
    public boolean onTouchEvent(MotionEvent ev){&#xD;
		&#xD;
		if(!lock)&#xD;
		{&#xD;
			if (mVelocityTracker == null) {&#xD;
	            mVelocityTracker = VelocityTracker.obtain();&#xD;
	        }&#xD;
	        mVelocityTracker.addMovement(ev);&#xD;
	        &#xD;
			final int action = ev.getAction();&#xD;
	        final float x = ev.getX();&#xD;
	        final float y = ev.getY();&#xD;
	        &#xD;
	        switch (action) {&#xD;
	        case MotionEvent.ACTION_DOWN://按下去&#xD;
	        	if(touchState==TOUCH_STATE_REST)&#xD;
	        	{&#xD;
	        		//记录按下去的的x坐标&#xD;
	                lastMotionX = x;&#xD;
	                touchState=TOUCH_STATE_MOVING;&#xD;
	                &#xD;
	                isMoved=false;&#xD;
	        	}&#xD;
	        	&#xD;
	        	break;&#xD;
	        case MotionEvent.ACTION_MOVE://拖动时&#xD;
	        	if(touchState==TOUCH_STATE_MOVING)&#xD;
	        	{&#xD;
	        		float offsetX=x-lastMotionX;&#xD;
	        		float offsetY=y-lastMotionY;&#xD;
	        		&#xD;
	        		if(isMoved)&#xD;
	        		{&#xD;
	        			lastMotionX=x;&#xD;
		            	lastMotionY=y;&#xD;
&#xD;
		            	final int count = views.size();&#xD;
		                //水平从左到右放置&#xD;
		                for (int i = 0; i &amp;lt; count; i++) {&#xD;
		                    final View child =views.get(i);&#xD;
		                    if (child.getVisibility() != View.GONE) {&#xD;
		                        final int childWidth = child.getMeasuredWidth();&#xD;
		                        int childLeft = child.getLeft()+(int)offsetX;&#xD;
		                        child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());&#xD;
		                        childLeft += childWidth;&#xD;
		                    }&#xD;
		                }&#xD;
	        		}&#xD;
	        		else if(Math.abs(offsetX)&amp;gt;TOUCH_SLOP||Math.abs(offsetY)&amp;gt;TOUCH_SLOP)&#xD;
	        		{&#xD;
	        			//移动超过阈值，则表示移动了&#xD;
						isMoved=true;&#xD;
						removeCallbacks(mLongPressRunnable);&#xD;
	        		}&#xD;
	        	}&#xD;
	        	&#xD;
	        	break;&#xD;
	        case MotionEvent.ACTION_UP://放开时&#xD;
	        	//释放了&#xD;
				removeCallbacks(mLongPressRunnable);&#xD;
				&#xD;
				if(isMoved)&#xD;
				{&#xD;
					if(touchState==TOUCH_STATE_MOVING)&#xD;
		        	{&#xD;
		        		touchState=TOUCH_STATE_SLOWING;&#xD;
		        		int sign=0;&#xD;
		            	final VelocityTracker velocityTracker = mVelocityTracker;&#xD;
		                //计算当前速度&#xD;
		                velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);&#xD;
		                //x方向的速度&#xD;
		                int velocityX = (int) velocityTracker.getXVelocity();&#xD;
		                if(velocityX &amp;gt; SNAP_VELOCITY)//足够的能力向左&#xD;
		                {&#xD;
		                	sign=1;&#xD;
		                	Log.e("enough to move left", "true");&#xD;
		                }&#xD;
		                else if (velocityX &amp;lt; -SNAP_VELOCITY)//足够的能力向右&#xD;
		                {&#xD;
		                	sign=-1;&#xD;
		                	Log.e("enough to move right", "right");&#xD;
		                }&#xD;
		                else&#xD;
		                {&#xD;
		                	sign=0;&#xD;
		                }&#xD;
		            	moveToFitView(sign);&#xD;
		            	if (mVelocityTracker != null) {&#xD;
		                    mVelocityTracker.recycle();&#xD;
		                    mVelocityTracker = null;&#xD;
		                }&#xD;
		            	&#xD;
		        	}&#xD;
				}&#xD;
	        	&#xD;
	        	&#xD;
	        	break;&#xD;
	        }&#xD;
		}&#xD;
		return true;&#xD;
	}&#xD;
	&#xD;
	int offset=0;&#xD;
	private void moveToFitView(int sign)&#xD;
	{&#xD;
		boolean b=swapView(sign);&#xD;
		if(true)&#xD;
		{&#xD;
			View view1=views.get(1);&#xD;
			int left=view1.getLeft();&#xD;
			//int offset=0;&#xD;
			if(left!=0)&#xD;
			{&#xD;
				offset=-1*left;&#xD;
			}&#xD;
			&#xD;
			moveView();&#xD;
		}&#xD;
	}&#xD;
	&#xD;
	FlipAnimationHandler mAnimationHandler;&#xD;
	int ovv=40;&#xD;
	private void moveView()&#xD;
	{&#xD;
		final int count = views.size();&#xD;
		&#xD;
		if(offset!=0)&#xD;
		{&#xD;
			int ov=0;&#xD;
			if(offset&amp;gt;0)&#xD;
			{&#xD;
			    ov=ovv; &#xD;
			}&#xD;
			else&#xD;
			{&#xD;
				ov=-1*ovv;&#xD;
			}&#xD;
			ovv=ovv-3;&#xD;
			if(ovv&amp;lt;1)&#xD;
		    {&#xD;
		    	ovv=3;&#xD;
		    }&#xD;
			if(Math.abs(offset)&amp;lt;Math.abs(ov))&#xD;
			{&#xD;
				ov=offset;&#xD;
				offset=0;&#xD;
				&#xD;
			}&#xD;
			else&#xD;
			{&#xD;
				offset=offset-ov;&#xD;
			}&#xD;
			&#xD;
			//水平从左到右放置&#xD;
			for (int i = 0; i &amp;lt; count; i++) {&#xD;
				final View child =views.get(i);&#xD;
				final int childWidth = child.getMeasuredWidth();&#xD;
				int childLeft = child.getLeft()+ov;&#xD;
				child.layout(childLeft, 0, childLeft + childWidth, child.getMeasuredHeight());&#xD;
				childLeft += childWidth;&#xD;
			}&#xD;
			&#xD;
			if(mAnimationHandler==null)&#xD;
			{&#xD;
				mAnimationHandler = new FlipAnimationHandler();&#xD;
			}&#xD;
			mAnimationHandler.sleep(1);&#xD;
		}&#xD;
		else&#xD;
		{&#xD;
			ovv=40;&#xD;
			touchState=TOUCH_STATE_REST;&#xD;
		}&#xD;
	}&#xD;
	&#xD;
	class FlipAnimationHandler extends Handler {&#xD;
		@Override&#xD;
		public void handleMessage(Message msg) {&#xD;
			TouchPageView.this.moveView();&#xD;
		}&#xD;
&#xD;
		public void sleep(long millis) {&#xD;
			this.removeMessages(0);&#xD;
			sendMessageDelayed(obtainMessage(0), millis);&#xD;
		}&#xD;
	}&#xD;
	&#xD;
	private boolean swapView(int sign)&#xD;
	{&#xD;
		boolean b=false;&#xD;
		if(sign==-1)//向左&#xD;
    	{&#xD;
    		View view0=views.get(0);&#xD;
    		if(view0.getLeft()&amp;lt;=-1*view0.getMeasuredWidth())&#xD;
    		{&#xD;
    			swapViewIndex(sign);&#xD;
    			&#xD;
    			View view2=views.get(1);&#xD;
    			View view3=views.get(2);&#xD;
    			int childWidth=view2.getMeasuredWidth();&#xD;
    			int childLeft=view2.getLeft()+childWidth;&#xD;
    			view3.layout(childLeft, 0, childLeft + view3.getMeasuredWidth(), view3.getMeasuredHeight());&#xD;
    			b=true;&#xD;
    		}&#xD;
    	}&#xD;
    	else if(sign==1)//向右&#xD;
    	{&#xD;
    		View view3=views.get(2);&#xD;
    		if(view3.getLeft()&amp;gt;view3.getMeasuredWidth())&#xD;
    		{&#xD;
    			swapViewIndex(sign);&#xD;
    			&#xD;
    			View view1=views.get(0);&#xD;
    			View view2=views.get(1);&#xD;
    			int childRight=view2.getLeft();&#xD;
    			int childLeft=childRight-view1.getMeasuredWidth();&#xD;
    			view1.layout(childLeft, 0, childRight, view1.getMeasuredHeight());&#xD;
    			b=true;&#xD;
    		}&#xD;
    	}&#xD;
		&#xD;
		return b;&#xD;
	}&#xD;
	&#xD;
	private void swapViewIndex(int sign)&#xD;
	{&#xD;
		if(sign==-1)//向左&#xD;
    	{&#xD;
			LinearLayout v=views.remove(0);&#xD;
			views.add(v);&#xD;
    	}&#xD;
    	else if(sign==1)//向右&#xD;
    	{&#xD;
    		LinearLayout v=views.remove(views.size()-1);&#xD;
    		views.add(0, v);&#xD;
    	}&#xD;
	}&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2266672.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/11/28/2266672.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hll2008/archive/2011/11/27/2265248.html</id><title type="text">我的android阅读软件“微读”-做最简单的手机阅读软件</title><summary type="text">我的android阅读软件“微读”发布,从开始设计到v1.0发布前后将近6周的时间，现在发布出来请大家提提意见，扔砖、砸鸡蛋、献花都可以，请尽情的评论。万分的感谢每一个留言的人，我的目标是做一个最最简单的阅读软件，虽然还差很远但是会持续的升级改进希望有一天有人说这个好用简单。还有一句广告：中国的法律都是.txt文件，不是.exe文件——来自猫扑，所以我这个很有用，真的很有用，很支持txt!!~~~软件：点击下载网站：http://www.app1001.com/新浪微博：@easy微读软件截图1、软件主页，这个是仿android主屏的实现，可以通过拖拽换屏。2、在线升级支持，当有新功能推出时可</summary><published>2011-11-27T13:20:00Z</published><updated>2011-11-27T13:20:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2011/11/27/2265248.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2011/11/27/2265248.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 16px;"&gt;我的android阅读软件&amp;ldquo;微读&amp;rdquo;发布,从开始设计到v1.0发布前后将近6周的时间，现在发布出来请大家提提意见，扔砖、砸鸡蛋、献花都可以，请尽情的评论。万分的感谢每一个留言的人，我的目标是做一个最最简单的阅读软件，虽然还差很远但是会持续的升级改进希望有一天有人说这个好用简单。还有一句广告：中国的法律都是.txt文件，不是.exe文件&amp;mdash;&amp;mdash;来自猫扑，所以我这个很有用，真的很有用，很支持txt!!~~~&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;span style="font-size: 16px;"&gt;软件：&lt;span style="color: #0000ff;"&gt;&lt;a href="http://www.app1001.com/api/DownApk.ashx"&gt;&lt;span style="color: #0000ff;"&gt;点击下载&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;网站：&lt;span style="color: #0000ff;"&gt;&lt;a style="font-size: 16px; line-height: 24px;" href="http://www.app1001.com/" target="_blank"&gt;&lt;span style="color: #0000ff;"&gt;http://www.app1001.com/&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;新浪微博：&lt;span style="color: #0000ff;"&gt;&lt;span style="color: #0000ff;"&gt;&lt;a href="http://weibo.com/easyweidu" target="_blank"&gt;@easy微读&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;软件截图&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;1、软件主页，这个是仿android主屏的实现，可以通过拖拽换屏。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720083171.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;2、在线升级支持，当有新功能推出时可以直接在线更新&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112721135779.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;3、针对某本书籍的管理菜单窗口，长按某本书时出现，对某本书籍实现阅读、删除、书签等功能。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720120574.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;4、主页菜单项，软件的一些常规功能和信息。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720134050.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;5、添加电子书功能，目前支持本机的txt文件其他的正在开发中&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112721425490.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;6、电子书阅读界面，仿真翻页模式。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720194332.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;7、电子书阅读界面，平移拖拽翻页模式。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720202276.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;8、阅读设置菜单功能。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720223089.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;9、阅读设置主题背景功能。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720231213.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;10、阅读设置亮度功能。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720242242.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;11、阅读设置字体功能，包括字号和行间距。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720250426.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;12、阅读翻页方式设置。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720270577.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;13、阅读书籍功能。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720295017.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;14、阅读页面跳转功能，可以任意拖拽阅读进度条。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720313041.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;15、阅读编码设置功能。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720334641.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;16、意见反馈功能，非常欢迎大家通过这个功能给我留言反馈。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011112720352741.png" alt="" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2265248.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/11/27/2265248.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hll2008/archive/2011/06/14/2080484.html</id><title type="text">iphone开发我的新浪微博客户端-用户登录账号删除篇(1.6)</title><summary type="text">在上一篇中我们完成账号的添加的功能，本篇就实现账号删除的功能，完成的具体效果看上（图5），当点击删除按钮的时候出现一个弹出对话框显示是否删除当前默认选择的用户，这个显示功能跟上一篇的添加几乎没有什么区别了，同样这里的实现依旧是基于自定义组件UIDialogWindow。当进一步点击确定按钮时，从Sqlite库中把当前选中的账号从表中删除，然后更新默认选择账号，从剩下的用账号录中选择第一个账号作为默认选中，如果剩下的账号记录已经为空那么页面跳转到前面实现的用户授权功能页面引导用户重新进行用户授权操作。如果点击的是取消按钮那么就关闭弹出对话框什么也不进行操作。 一、首先按照UIDialogWin.</summary><published>2011-06-14T04:34:00Z</published><updated>2011-06-14T04:34:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2011/06/14/2080484.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2011/06/14/2080484.html"/><content type="html">&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913075511.png" /&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 在上一篇中我们完成账号的添加的功能，本篇就实现账号删除的功能，完成的具体效果看上（&lt;span style="color: #0000ff;"&gt;图5&lt;/span&gt;），当点击删除按钮的时候出现一个弹出对话框显示是否删除当前默认选择的用户，这个显示功能跟上一篇的添加几乎没有什么区别了，同样这里的实现依旧是基于自定义组件UIDialogWindow。当进一步点击确定按钮时，从Sqlite库中把当前选中的账号从表中删除，然后更新默认选择账号，从剩下的用账号录中选择第一个账号作为默认选中，如果剩下的账号记录已经为空那么页面跳转到前面实现的用户授权功能页面引导用户重新进行用户授权操作。如果点击的是取消按钮那么就关闭弹出对话框什么也不进行操作。 &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 一、首先按照UIDialogWindow的用法先新建名为DelConfirmViewController的UIViewController subclass类型的类文件，新进的时候记得勾上With XIB user interface选项。&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 二、打开上一步新建的DelConfirmViewController.h文件，声明一个UITextView用来显示文字和两个UIButton按钮（确定按钮和取消按钮），delegate和onClick就不用说了，前面提到好几次了，还有确定按钮事件和取消按钮事件。具体代码如下：&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Global.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; DelConfirmViewController : UIViewController {&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;    SEL onClick;&lt;br /&gt;    &lt;br /&gt;    IBOutlet UITextView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;textView;&lt;br /&gt;    IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;okBtn;&lt;br /&gt;    IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;cancelBtn;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@property (nonatomic,retain)IBOutlet UITextView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;textView;&lt;br /&gt;@property (nonatomic,retain)IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;okBtn;&lt;br /&gt;@property (nonatomic,retain)IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;cancelBtn;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)setDelegate:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aDelegate onClick:(SEL)aOnClick;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)okDel:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)cancelDel:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;三、双击DelConfirmViewController.xib文件，在IB中打开从Library中拖相应的组件到View上并且设置相应的属性，还需要适当的设置view的尺寸大小以及view背景透明，具体如下图：&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011061412040286.jpg" /&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;完成布局后还需要完成相应的连接工作了，具体如下图：&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011061412050326.jpg" /&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;四、完成DelConfirmViewController.xib设计后打开DelConfirmViewController.m完成如下代码：&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)setDelegate:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aDelegate onClick:(SEL)aOnClick&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aDelegate;&lt;br /&gt;    onClick&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aOnClick;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)okDel:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; performSelector:onClick withObject:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ok&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] ;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)cancelDel:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; performSelector:onClick withObject:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;cancel&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] ;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)setDelegate:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aDelegate onClick:(SEL)aOnClick&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aDelegate;&lt;br /&gt;    onClick&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aOnClick;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)okDel:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; performSelector:onClick withObject:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ok&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] ;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)cancelDel:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; performSelector:onClick withObject:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;cancel&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] ;&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;五、接下来就是在LoginViewController调用DelConfirmViewController进行显示，首先在LoginViewController.h添加声明DelConfirmViewController。接下来点击删除按钮调用DelConfirmViewController进行显示的代码已经在前面一篇的步骤六中完成了，有没有发现到这里为止跟前面的一片几乎一模一样了没有什么区别。&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;六、接下来开始就是不同的地方了，点击删除按钮后调用[self showDelConfirm]，现在完成showDelConfirm方法代码如下：&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;显示删除帐号确认框&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)showDelConfirm&lt;br /&gt;{&lt;br /&gt;    delConfirmViewController&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[DelConfirmViewController alloc] init]; &lt;br /&gt;    &lt;br /&gt;    dialog&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[UIDialogWindow alloc]initWithView:delConfirmViewController.view];&lt;br /&gt;    [delConfirmViewController setDelegate:self onClick:@selector(confirmDel:)];&lt;br /&gt;    NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;msg&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[NSString stringWithFormat:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;您确定要删除名为&amp;ldquo;%@&amp;rdquo;的帐号？&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,selectViewController.nameLabel.text];&lt;br /&gt;    [[delConfirmViewController textView] setText:msg];&lt;br /&gt;    [dialog show];&lt;br /&gt;    &lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&amp;nbsp; &amp;nbsp; &amp;nbsp;七、在上面的代码中为确定按钮设置了事件方法confirmDel，代码如下：&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;确认删除帐号&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)confirmDel:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)txt&lt;br /&gt;{&lt;br /&gt;    [[[[UIApplication sharedApplication] windows] objectAtIndex:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] makeKeyAndVisible];&lt;br /&gt;    &lt;br /&gt;    [dialog close];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (txt&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ok&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        Sqlite &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;sqlite&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[Sqlite alloc] init];&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;([sqlite delUser:selectViewController.nameLabel.text])&lt;br /&gt;        {&lt;br /&gt;            [self showUserInfo];&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;上面的方法中调用了Sqlite中的delUser方法从数据库中把选中的账号，删除完成后调用showUserInfo方法更新账号显示，这个方法前面的文章中已经提供了。&lt;/div&gt;&#xD;
&lt;div&gt;到处本篇的功能也就完成了，请继续关注下一篇。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2080484.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/06/14/2080484.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hll2008/archive/2011/06/06/2073774.html</id><title type="text">iphone开发我的新浪微博客户端-用户登录账号添加篇(1.5)</title><summary type="text">本篇将在上一篇的基础上完成账号的添加的功能，这个功能都相对比较简单看上（图4），点击添加按钮的时候出现一个弹出对话框，这个对话框的实现我们已经在前面的（iphone开发我的新浪微博客户端-用户登录自定义弹出窗口篇(1.2)）和(iphone开发我的新浪微博客户端-用户登录OAuth授权认证篇(1.3))这两篇博客中已经讲过弹出窗组件的定义和使用了，这里的实现依旧是基于自定义组件UIDialogWindow。 一、这个功能其实除了弹出提示窗口没有任何其他需要多做的功能，因为当点击弹出窗口的开始按钮进行账号添加的时候其实就是调用前面的(iphone开发我的新浪微博客户端-用户登录OAuth授权认.</summary><published>2011-06-06T11:21:00Z</published><updated>2011-06-06T11:21:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2011/06/06/2073774.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2011/06/06/2073774.html"/><content type="html">&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913065718.png" /&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;本篇将在上一篇的基础上完成账号的添加的功能，这个功能都相对比较简单看上（&lt;span style="color: #0000ff;"&gt;图4&lt;/span&gt;），点击添加按钮的时候出现一个弹出对话框，这个对话框的实现我们已经在前面的（&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/05/30/2063577.html" target="_blank"&gt;iphone开发我的新浪微博客户端-用户登录自定义弹出窗口篇(1.2)&lt;/a&gt;）和(&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/05/31/2062360.html" target="_blank"&gt;iphone开发我的新浪微博客户端-用户登录OAuth授权认证篇(1.3)&lt;/a&gt;)这两篇博客中已经讲过弹出窗组件的定义和使用了，这里的实现依旧是基于自定义组件UIDialogWindow。&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;一、这个功能其实除了弹出提示窗口没有任何其他需要多做的功能，因为当点击弹出窗口的开始按钮进行账号添加的时候其实就是调用前面的(&lt;a target="_blank" href="http://www.cnblogs.com/hll2008/archive/2011/05/31/2062360.html"&gt;iphone开发我的新浪微博客户端-用户登录OAuth授权认证篇(1.3)&lt;/a&gt;)中用户授权的功能页面了没有任何区别了，所以这个功能就是弹出提示窗口了，弹出窗口当然是用前面自定义组件UIDialogWindow实现了，按照UIDialogWindow的用法先新建名为ConfirmViewController的UIViewController subclass类型的类文件，新进的时候记得勾上With XIB user interface选项。&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;二、打开上一步新建的ConfirmViewController.h文件，声明一个UITextView用来显示文字和两个UIButton按钮（开始按钮和取消按钮），delegate和onClick就不用说了，前面提到好几次了。还有开始按钮事件和取消按钮事件。具体代码如下：&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Global.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; ConfirmViewController : UIViewController {&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;    SEL onClick;&lt;br /&gt;    IBOutlet UITextView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;textView;&lt;br /&gt;    IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;startBtn;&lt;br /&gt;    IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;cancelBtn;&lt;br /&gt;}&lt;br /&gt;@property (nonatomic,retain)IBOutlet UITextView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;textView;&lt;br /&gt;@property (nonatomic,retain)IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;startBtn;&lt;br /&gt;@property (nonatomic,retain)IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;cancelBtn;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)setDelegate:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aDelegate onClick:(SEL)aOnClick;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)startAuth:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)cancelAuth:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;三、双击ConfirmViewController.xib文件，在IB中打开从Library中拖相应的组件到View上并且设置相应的属性，还需要适当的设置view的尺寸大小以及view背景透明，具体如下图：&lt;/div&gt;&#xD;
&lt;div&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011060618574017.jpg" /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;完成布局后还需要完成相应的连接工作了，具体如下图：&lt;/div&gt;&#xD;
&lt;div&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011060618591139.jpg" /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;四、完成ConfirmViewController.xib设计后打开ConfirmViewController.m完成如下代码：&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)setDelegate:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aDelegate onClick:(SEL)aOnClick&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aDelegate;&lt;br /&gt;    onClick&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aOnClick;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)startAuth:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; performSelector:onClick withObject:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;start&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] ;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)cancelAuth:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; performSelector:onClick withObject:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;cancel&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] ;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)viewDidLoad {&lt;br /&gt;    [super viewDidLoad];&lt;br /&gt;    textView.font&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[UIFont systemFontOfSize:&lt;/span&gt;&lt;span style="color: #800080;"&gt;15&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;    [startBtn setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;btn_bg&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;12.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;14.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;    [startBtn setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;btn_h_bg&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;12.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;14.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateHighlighted];&lt;br /&gt;    [cancelBtn setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;btn_bg&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;12.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;14.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;    [cancelBtn setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;btn_h_bg&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;12.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;14.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateHighlighted];&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;五、接下来就是在LoginViewController调用ConfirmViewController进行显示，首先在LoginViewController.h添加声明ConfirmViewController。&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;六、打开LoginViewController.m文件，添加-(void)btnBarOnClick:(NSNumber *)index方法，回顾一下上一篇我们给selectViewController设置了一个onClick事件（&lt;span style="color: #0000ff;"&gt;...onClick:@selector(btnBarOnClick:)&lt;/span&gt;）,这个事件就是当用户点击selectViewController上的添加、切换、删除三个按钮时执行的事件，所以这里我们需要添加这个方法，代码如下:&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)btnBarOnClick:(NSNumber &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)index&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;点击添加按钮&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ([index intValue]&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [self showConfirm];&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;点击切换按钮&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ([index intValue]&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [self showUserList];&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;点击删除按钮&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ([index intValue]&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [self showDelConfirm];&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;七、看上面的代码中当index等于0的时候就是点击了添加按钮，这个时候调用showConfirm方法显示弹出窗口，代码如下：&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;显示添加帐号确认对话框&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)showConfirm&lt;br /&gt;{&lt;br /&gt;    confirmViewController&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[ConfirmViewController alloc] init]; &lt;br /&gt;    dialog&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[UIDialogWindow alloc]initWithView:confirmViewController.view];&lt;br /&gt;    [confirmViewController setDelegate:self onClick:@selector(confirmAuth:)];&lt;br /&gt;    [dialog show];&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;确认开始添加帐号，显示授权页面或者点击取消按钮&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)confirmAuth:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)txt&lt;br /&gt;{&lt;br /&gt;    [[[[UIApplication sharedApplication] windows] objectAtIndex:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] makeKeyAndVisible];&lt;br /&gt;    &lt;br /&gt;    [dialog close];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (blog &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; txt&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;start&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        UIViewController &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;controller &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[blog getOAuthViewController:self];&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (controller) {&lt;br /&gt;            [self presentModalViewController: controller animated: YES];&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;    }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;        NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;click cancel btn&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&amp;nbsp; &amp;nbsp; &amp;nbsp;到此账号添加的功能就算是完成了，非常的简单，其实这功能中需要实现的账号和密码的输入授权，以及账号信息的获取保存到sqlite等功能实现已经在OAuth授权认证篇做好了，所以这里非常的省力。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2073774.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/06/06/2073774.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hll2008/archive/2011/06/04/2072501.html</id><title type="text">iphone开发我的新浪微博客户端-用户登录等待篇(1.4)</title><summary type="text">本篇在上一篇的基础上完成如上（图2）所示的用户登录等待功能，首先说说这个页面功能的由来，这个就是当检查sqlite库中已经存在用户账号的时候从表中把用户记录查询出来，然后从NSUserDefaults中获取上一次登录的账号，如果查询出来的用户记录中包含上一次登录的账号，那么就把这个账号作为默认显示账号，如果没有就取用户记录中的第一个账号作为默认显示账号，上一篇中当用户完成OAuth认证把账号信息保存到sqlite库后也是显示这个页面功能。 先来看看UI是怎么实现了，看上图这个界面包含用户头像小图标、用户名称、3个功能按钮（添加、切换、删除）这三部分元素，我的做法是把这三部分元素添加到一个单独.</summary><published>2011-06-04T15:26:00Z</published><updated>2011-06-04T15:26:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2011/06/04/2072501.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2011/06/04/2072501.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913064271.png" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 本篇在上一篇的基础上完成如上（&lt;span style="color: #0000ff;"&gt;图2&lt;/span&gt;）所示的用户登录等待功能，首先说说这个页面功能的由来，这个就是当检查sqlite库中已经存在用户账号的时候从表中把用户记录查询出来，然后从NSUserDefaults中获取上一次登录的账号，如果查询出来的用户记录中包含上一次登录的账号，那么就把这个账号作为默认显示账号，如果没有就取用户记录中的第一个账号作为默认显示账号，上一篇中当用户完成OAuth认证把账号信息保存到sqlite库后也是显示这个页面功能。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 先来看看UI是怎么实现了，看上图这个界面包含用户头像小图标、用户名称、3个功能按钮（添加、切换、删除）这三部分元素，我的做法是把这三部分元素添加到一个单独的UIView上，并且把这个UIView背景设置成透明，然后把这个UIView显示在上一篇的LoginViewController的View之上，这样UIView就有了背景图了，背景图由底下的LoginViewController的View提供。同时上一篇中在做LoginViewController有个遗漏忘记讲给LoginViewController的View添加背景图了，这里补上，做法是如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 补上一篇：双击LoginViewController.xib文件，开启IB后双击LoginViewController.xib的View打开，然后从Library面板中拖一个Image View组件到这个View上并且把这个Image View尺寸设置跟View一样大，然后为这个Image View设置一张背景图，如下图：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011060410582164.jpg" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;补上上面的内容后，现在回到正题继续讲本篇的功能。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;一、上面讲到了新建一个单独的UIView作为本功能的界面﻿﻿，这里先新建名为SelectViewController的UIViewController subclass类型的类文件，新建的时候记得勾上With XIB user interface选项。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;二、打开上步新建的SelectViewController.h文件,声明一个UIButton作为用户头像小图标，一个UILabel作为用户名称，还有delegate和onClick用来调用LoginViewController中的方法用，还有这还import了一个名为UICustomSegmentedControl.h的文件，这个是一个自定义的组件，用来实现上面提到的3个按钮的功能，该组件和系统自带的UISegmentedControl组件类似，至于为什么非要自己做一个而不用系统自带理由和前面的UIDialogWindow一样，文章最后我会把这个组件的代码贴出来这里就不解释了直接使用这个组件，具体代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Global.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;UICustomSegmentedControl.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; SelectViewController : UIViewController&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UICustomSegmentedControlDelegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;    IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;iconBtn;&lt;br /&gt;    IBOutlet UILabel &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;nameLabel;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;    SEL onClick;&lt;br /&gt;}&lt;br /&gt;@property(nonatomic,retain)IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;iconBtn;&lt;br /&gt;@property(nonatomic,retain)IBOutlet UILabel &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;nameLabel;&lt;br /&gt;@property(nonatomic,retain)&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)initWithDelegate:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aDelegate onClick:(SEL)aOnClick;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&#xD;
&amp;nbsp; &amp;nbsp; &amp;nbsp;三、双击SelectViewController.xib用IB打开，Library面板中拖一个UIButton和UILabel到View中间合适的位置同时做好连接操作，分别连接到SelectViewController.h中的iconBtn和nameLabel，并且把View的background设置成clear color然后保存，如下图：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011060412044082.jpg" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;四、打开SelectViewController.m文件，首先是initWithDelegate方法，这个方法主要是设置SelectViewController的delegate和delegate，代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)initWithDelegate:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aDelegate onClick:(SEL)aOnClick;&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (self&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[super init]) {&lt;br /&gt;        self.&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aDelegate;&lt;br /&gt;        onClick&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aOnClick;&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; self;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;五、接下来我们要设置一下用户头像小图标（iconBtn）白色方框背景和默认用户小图标，实现代码非常简单了，在viewDidLoad方法里添加如下代码：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #000000;"&gt;[iconBtn setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;icon_bg&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;8.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;7.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;    [iconBtn setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;icon_h_bg&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;8.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;7.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateHighlighted];&lt;br /&gt;    [iconBtn setImage:[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;user_icon&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;    [iconBtn setImage:[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;user_icon&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateHighlighted];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;六、接下来我们要实现3个功能按钮（添加、切换、删除），前面提到了这功能是由自定义组件UICustomSegmentedControl实现的，在viewDidLoad方法里实例化一个UICustomSegmentedControl并且添加到SelectViewController的View中间适当位置，UICustomSegmentedControl实例化的时候需要5个参数，分别子按钮个数、子按钮尺寸、子按钮之间分隔图片、tag属性、delegate属性，代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #000000;"&gt;UICustomSegmentedControl &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;segmented&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[UICustomSegmentedControl alloc] initWithSegmentCount:&lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt; segmentsize:CGSizeMake(&lt;/span&gt;&lt;span style="color: #800080;"&gt;85.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;46.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;) dividerImage:[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;line&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] tag:&lt;/span&gt;&lt;span style="color: #800080;"&gt;99909&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;:self];&lt;br /&gt;    segmented.center&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;CGPointMake(self.view.bounds.size.width&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,self.view.bounds.size.height&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;64&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    [self.view addSubview:segmented];&lt;br /&gt;    [segmented release];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;七、UICustomSegmentedControl组件使用还没有完，还需要实现几个方法，代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;构造子按钮&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(UIButton&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)buttonFor:(UICustomSegmentedControl&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)segmentedControl atIndex:(NSUInteger)segmentIndex;&lt;br /&gt;{&lt;br /&gt;    UIButton&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; button &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [UIButton buttonWithType:UIButtonTypeCustom];&lt;br /&gt;    button.frame &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CGRectMake(&lt;/span&gt;&lt;span style="color: #800080;"&gt;0.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;, segmentedControl.segmentSize.width, segmentedControl.segmentSize.height);&lt;br /&gt;    button.adjustsImageWhenHighlighted &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; NO;&lt;br /&gt;    button.titleLabel.font&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[UIFont systemFontOfSize:&lt;/span&gt;&lt;span style="color: #800080;"&gt;15.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;    [button setTitleColor:[UIColor colorWithRed:&lt;/span&gt;&lt;span style="color: #800080;"&gt;50.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #800080;"&gt;255.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt; green:&lt;/span&gt;&lt;span style="color: #800080;"&gt;79.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #800080;"&gt;255.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt; blue:&lt;/span&gt;&lt;span style="color: #800080;"&gt;133.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #800080;"&gt;255.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt; alpha:&lt;/span&gt;&lt;span style="color: #800080;"&gt;1.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (segmentIndex&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [button setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;left_btn&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;10.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;23.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;        [button setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;left_h_btn&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;10.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;23.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateHighlighted];&lt;br /&gt;        [button setImage:[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;add&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;[button setImage:[Global pngWithPath:@"add"] forState:UIControlStateHighlighted];&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        [button setTitle:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;添加&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; forState:UIControlStateNormal];&lt;br /&gt;        &lt;br /&gt;    }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (segmentIndex&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [button setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;center_btn&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;23.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;        [button setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;center_h_btn&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;23.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateHighlighted];&lt;br /&gt;        [button setImage:[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;change&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;[button setImage:[Global pngWithPath:@"change"] forState:UIControlStateHighlighted];&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        [button setTitle:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;切换&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; forState:UIControlStateNormal];&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;        [button setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;right_btn&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;23.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;        [button setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;right_h_btn&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;1.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;23.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateHighlighted];&lt;br /&gt;        [button setImage:[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;del&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;[button setImage:[Global pngWithPath:@"del"] forState:UIControlStateHighlighted];&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        [button setTitle:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;删除&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; forState:UIControlStateNormal];&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; button;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;子按钮点击事件&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)touchUpInsideSegmentIndex:(NSUInteger)segmentIndex&lt;br /&gt;{&lt;br /&gt;    NSNumber &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;index&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[NSNumber numberWithInteger:segmentIndex];&lt;br /&gt;    [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; performSelector:onClick withObject:index];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;子按钮点击按下去事件&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)touchDownAtSegmentIndex:(NSUInteger)segmentIndex&lt;br /&gt;{&lt;br /&gt;    &lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&#xD;
&amp;nbsp; &amp;nbsp; &amp;nbsp;八、完成了SelectViewController后，接下来就是在LoginViewController中调用显示这个SelectViewController，打开LoginViewController.m文件找到上一篇中我们写的-(void)showUserInfo方法，在这个方法中就是检查sqlite库中是否有账号记录，上一篇就是没有账号记录的情况，在showUserInfo方法显示弹出窗口提示用户进行授权认证，现在在这个方法中补上有账号记录的情况，那么就调用调用显示这个SelectViewController，代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;如果数据库中已经有帐号记录那么取第一条用户信息进行显示，否则显示授权认证开始对话框&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)showUserInfo&lt;br /&gt;{&lt;br /&gt;    Sqlite &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;sqlite&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[Sqlite alloc] init];&lt;br /&gt;    self.userList&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[sqlite getUserList]; &lt;br /&gt;    [sqlite release];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (self.userList) {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ([self.userList count]&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;无账号记录的情况，显示弹出窗口提示用户进行授权认证&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;br /&gt;        }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;            User &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;u&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[self.userList objectAtIndex:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #000000;"&gt;            //获取上一次的登录用户记录&lt;br /&gt;            NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;uid&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[NSUserDefaults standardUserDefaults] objectForKey:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;selectUID&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;            NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;id:%@&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,uid);&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (uid&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt;nil) {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (User &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;obj &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; userList) {&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ([obj.userId isEqualToString:uid] ) {&lt;br /&gt;                        u&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;obj;&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;selectViewController) {&lt;br /&gt;                selectViewController&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[SelectViewController alloc] initWithDelegate:self onClick:@selector(btnBarOnClick:) ];&lt;br /&gt;                [self.view addSubview:selectViewController.view];&lt;br /&gt;            }&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            [self setShowUserInfo:u];&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;    }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;        NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;no&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;上面方法中实例化了一个SelectViewController并且添加到了当前view中，还有一个知识点就是从NSUserDefaults获取上一次登录的用户账号id，在后面的文章中会有提到每次用登录的时候都会在NSUserDefaults保存登录账号的id，方便下一次登录时作为默认用户。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;九、在上面的方法中最后调用了[self setShowUserInfo:u]方法，把默认账号的小图标头像和名称显示在SelectViewController的view中，代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;设置显示用户图标和名字&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)setShowUserInfo:(User &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)u&lt;br /&gt;{&lt;br /&gt;    [selectViewController.nameLabel setText:u.name];&lt;br /&gt;    [selectViewController.iconBtn setImage:u.icon forState:UIControlStateNormal];&lt;br /&gt;    [selectViewController.iconBtn setImage:u.icon forState:UIControlStateHighlighted];&lt;br /&gt;    [selectViewController.iconBtn addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside];&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;十、在上面的代码中给小图标头像按钮添加了一个login:事件，也就是点击这个小图标后会以这个账号登录微博，至于登录功能我们在以后的文章中实现了，本篇已经完成了任务了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;请继续关注后续的文章，谢谢！！！&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ps:UICustomSegmentedControl组件代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  UICustomSegmentedControl.h&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  MinBlog4Sina&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  Created by 水的右边 on 11-5-17.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  Copyright 2011 &lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;http://www.cnblogs.com/hll2008/&lt;/span&gt;&lt;span style="color: #008000;"&gt; All rights reserved.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Foundation&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;Foundation.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@class&lt;/span&gt;&lt;span style="color: #000000;"&gt; UICustomSegmentedControl;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@protocol&lt;/span&gt;&lt;span style="color: #000000;"&gt; UICustomSegmentedControlDelegate&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(UIButton&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)buttonFor:(UICustomSegmentedControl&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)segmentedControl atIndex:(NSUInteger)segmentIndex;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)touchUpInsideSegmentIndex:(NSUInteger)segmentIndex;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)touchDownAtSegmentIndex:(NSUInteger)segmentIndex;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; UICustomSegmentedControl : UIView {&lt;br /&gt;    NSMutableArray&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; buttons;&lt;br /&gt;    NSObject &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UICustomSegmentedControlDelegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;    CGSize segmentSize;&lt;br /&gt;}&lt;br /&gt;@property (nonatomic, retain) NSMutableArray&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; buttons;&lt;br /&gt;@property (nonatomic,assign)CGSize segmentSize;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)initWithSegmentCount:(NSUInteger)segmentCount segmentsize:(CGSize)segmentsize dividerImage:(UIImage&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)dividerImage tag:(NSInteger)objectTag &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;:(NSObject &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UICustomSegmentedControlDelegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)customSegmentedControlDelegate;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  UICustomSegmentedControl.m&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  MinBlog4Sina&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  Created by 水的右边 on 11-5-17.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  Copyright 2011 &lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;http://www.cnblogs.com/hll2008/&lt;/span&gt;&lt;span style="color: #008000;"&gt; All rights reserved.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;UICustomSegmentedControl.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@implementation&lt;/span&gt;&lt;span style="color: #000000;"&gt; UICustomSegmentedControl&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@synthesize&lt;/span&gt;&lt;span style="color: #000000;"&gt; buttons;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@synthesize&lt;/span&gt;&lt;span style="color: #000000;"&gt; segmentSize;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)initWithSegmentCount:(NSUInteger)segmentCount segmentsize:(CGSize)segmentsize dividerImage:(UIImage&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)dividerImage tag:(NSInteger)objectTag &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;:(NSObject &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UICustomSegmentedControlDelegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)customSegmentedControlDelegate&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (self&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[super init]) {&lt;br /&gt;        segmentSize&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;segmentsize;&lt;br /&gt;        self.tag&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;objectTag;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;customSegmentedControlDelegate;&lt;br /&gt;        self.frame &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CGRectMake(&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, (segmentsize.width &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; segmentCount) &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dividerImage.size.width &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; (segmentCount &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)), segmentsize.height);&lt;br /&gt;        self.buttons &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [[NSMutableArray alloc] initWithCapacity:segmentCount];&lt;br /&gt;        &lt;br /&gt;        CGFloat horizontalOffset &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (NSUInteger i&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;segmentCount; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;            UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;button&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; buttonFor:self atIndex:i];&lt;br /&gt;            &lt;br /&gt;            [button addTarget:self action:@selector(touchDownAction:) forControlEvents:UIControlEventTouchDown];&lt;br /&gt;            [button addTarget:self action:@selector(touchUpInsideAction:) forControlEvents:UIControlEventTouchUpInside];&lt;br /&gt;            [button addTarget:self action:@selector(otherTouchesAction:) forControlEvents:UIControlEventTouchUpOutside];&lt;br /&gt;            [button addTarget:self action:@selector(otherTouchesAction:) forControlEvents:UIControlEventTouchDragOutside];&lt;br /&gt;            [button addTarget:self action:@selector(otherTouchesAction:) forControlEvents:UIControlEventTouchDragInside];&lt;br /&gt;            &lt;br /&gt;            [buttons addObject:button];&lt;br /&gt;            button.frame &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CGRectMake(horizontalOffset, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, button.frame.size.width, button.frame.size.height);&lt;br /&gt;            [self addSubview:button];&lt;br /&gt;            &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (i &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; segmentCount &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;            {&lt;br /&gt;                UIImageView&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; divider &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [[[UIImageView alloc] initWithImage:dividerImage] autorelease];&lt;br /&gt;                divider.frame &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CGRectMake(horizontalOffset &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; segmentsize.width, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, dividerImage.size.width, dividerImage.size.height);&lt;br /&gt;                [self addSubview:divider];&lt;br /&gt;            }&lt;br /&gt;            horizontalOffset &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; horizontalOffset &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; segmentsize.width &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; dividerImage.size.width;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; self;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)setButtonState:(UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)selectedButton&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;for (UIButton * button in buttons) {&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    if (button==selectedButton) {&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;        button.selected=YES;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;button.highlighted=button.selected? NO:YES;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    }else {&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;        button.selected=NO;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;button.highlighted=NO;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;}&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)touchDownAction:(UIButton&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)button&lt;br /&gt;{&lt;br /&gt;    [self setButtonState:button];&lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ([&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; respondsToSelector:@selector(touchDownAtSegmentIndex:)])&lt;br /&gt;    {&lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; touchDownAtSegmentIndex:[buttons indexOfObject:button]];&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)touchUpInsideAction:(UIButton&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)button&lt;br /&gt;{&lt;br /&gt;    [self setButtonState:button];&lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ([&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; respondsToSelector:@selector(touchUpInsideSegmentIndex:)])&lt;br /&gt;    {&lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; touchUpInsideSegmentIndex:[buttons indexOfObject:button]];&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)otherTouchesAction:(UIButton&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)button&lt;br /&gt;{&lt;br /&gt;    [self setButtonState:button];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)dealloc&lt;br /&gt;{&lt;br /&gt;    [buttons release];&lt;br /&gt;    [super dealloc];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2072501.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/06/04/2072501.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hll2008/archive/2011/05/31/2062360.html</id><title type="text">iphone开发我的新浪微博客户端-用户登录OAuth授权认证篇(1.3)</title><summary type="text">在上一篇中，我们已经完成了UIDialogWindow自定义弹出窗口组件，本篇接下来完成用户的OAuth授权认证功能，完成后效果如上图。 一、新建名为LoginViewController的UIViewController subclass类型的类文件，新进的时候记得勾上With XIB user interface选项.接下来我们要把这个ViewController添加到window进行显示，继续往下做。 二、打开xcode自动创建的MinBlog4SinaAppDelegate.h文件，添加如下代码：#import &amp;lt;UIKit/UIKit.h&amp;gt;@class LoginView</summary><published>2011-05-31T14:17:00Z</published><updated>2011-05-31T14:17:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2011/05/31/2062360.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2011/05/31/2062360.html"/><content type="html">&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913044359.png" /&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913051264.png" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 在上一篇中，我们已经完成了UIDialogWindow自定义弹出窗口组件，本篇接下来完成用户的OAuth授权认证功能，完成后效果如上图。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 一、新建名为LoginViewController的UIViewController subclass类型的类文件，新进的时候记得勾上With XIB user interface选项.接下来我们要把这个ViewController添加到window进行显示，继续往下做。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 二、打开xcode自动创建的MinBlog4SinaAppDelegate.h文件，添加如下代码：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&#xD;
&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@class&lt;/span&gt;&lt;span style="color: #000000;"&gt; LoginViewController;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; MinBlog4SinaAppDelegate : NSObject &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIApplicationDelegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;    IBOutlet UIWindow &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;window;&lt;br /&gt;    IBOutlet LoginViewController &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;loginViewController;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@property (nonatomic, retain) IBOutlet UIWindow &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;window;&lt;br /&gt;@property (nonatomic,retain)IBOutlet LoginViewController &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;loginViewController;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;三、打开MinBlog4SinaAppDelegate.m文件，添加如下代码&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;MinBlog4SinaAppDelegate.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;LoginViewController.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@implementation&lt;/span&gt;&lt;span style="color: #000000;"&gt; MinBlog4SinaAppDelegate&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@synthesize&lt;/span&gt;&lt;span style="color: #000000;"&gt; window;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@synthesize&lt;/span&gt;&lt;span style="color: #000000;"&gt; loginViewController;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; (BOOL)application:(UIApplication &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)application didFinishLaunchingWithOptions:(NSDictionary &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)launchOptions {    &lt;br /&gt;    [application setStatusBarHidden:NO];&lt;br /&gt;[self.window addSubview:loginViewController.view];&lt;br /&gt;    [self.window makeKeyAndVisible];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; YES;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)dealloc {&lt;br /&gt;    [window release];&lt;br /&gt;    [loginViewController release];&lt;br /&gt;    [super dealloc];&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;四、接下我们要用到Interface Builder这个工具处理UI方面的工作，双击MainWindow.xib文件，这样IB会打开这个文件，然后从Library面版拖一个View Controller组件到MainWindow.xib中，并且把这个组件的class命名成我们上面建的LoginViewController，如下图所示：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052922230662.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;五、接下来鼠标点击选中Min Blog4 Sina App Delegate文件，然后右边的面板中选择Connections，然后能看到一个loginViewController，然后鼠标点击跟在它后面的小圆圈点，然后能拉出一条线，然后拖拽这个线到上面四步骤中新建的LoginViewController组件上完成连接工作，完成后如下图所示：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052922291856.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;到此我们完成了把LoginViewController的view添加到window进行显示进行显示的工作了，这样时候可以运行看看，不过运行起来后除了白色的屏幕没有其它任何的东西。&lt;/p&gt;&#xD;
&lt;p&gt;六、打开LoginViewController.h文件，添加如下代码：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;UIDialogWindow.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Sqlite.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;InfoViewController.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;BlogClient.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;JSON.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; LoginViewController : UIViewController {&lt;br /&gt;    UIDialogWindow &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;dialog;&lt;br /&gt;    InfoViewController &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;infoViewController;&lt;br /&gt;    NSMutableArray &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;userList;&lt;br /&gt;    BlogClient &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;blog;&lt;br /&gt;}&lt;br /&gt;@property (nonatomic,retain)NSMutableArray &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;userList;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;上面infoViewController是一个UIViewController,这个是用来提供弹出窗口的内容部分的view用，在上一篇中说过UIDialogWindow组件的内容view是在使用时才提供的，这个infoViewController就是用来给名为dialog的UIDialogWindow组件提供显示内容view。这样我们还需要新建名为InfoViewController的UIViewController subclass类型的类文件，新进的时候记得勾上With XIB user interface选项。&lt;/p&gt;&#xD;
&lt;p&gt;七、如最上面的（&lt;span style="color: #0000ff;"&gt;图6&lt;/span&gt;）所示这个InfoViewController弹出窗口内容就包括一个显示文字描述的TextView;一个点击执行开始的Button，以及左上角的蓝色小图标和&amp;ldquo;信息提示&amp;rdquo;，根据这个情况打开上一步新建InfoViewController.h文件声明TextView和Button和按钮事件，至于蓝色小图标和&amp;ldquo;信息提示&amp;rdquo;直接用IB在xib文件里加上即可，至于delegate和SEL onClick，是当用户点击开始按钮后会调用delegate的onClick方法，告诉调用这个dialog的UIDialogWindow组件父ViewController按钮被点击了，dialog不处理具体的业务。InfoViewController.h具体代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIKit.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Global.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; InfoViewController : UIViewController {&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;    SEL onClick;&lt;br /&gt;    IBOutlet UITextView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;textView;&lt;br /&gt;    IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;startBtn;&lt;br /&gt;}&lt;br /&gt;@property (nonatomic,retain)IBOutlet UITextView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;textView;&lt;br /&gt;@property (nonatomic,retain)IBOutlet UIButton &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;startBtn;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)setDelegate:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aDelegate onClick:(SEL)aOnClick;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)startAuth:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;八、InfoViewController.m代码中我们用到了前面准备篇中定义在Global下的pngWithPath的方法，具体如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;InfoViewController.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@implementation&lt;/span&gt;&lt;span style="color: #000000;"&gt; InfoViewController&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@synthesize&lt;/span&gt;&lt;span style="color: #000000;"&gt; textView;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@synthesize&lt;/span&gt;&lt;span style="color: #000000;"&gt; startBtn;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)setDelegate:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aDelegate onClick:(SEL)aOnClick&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aDelegate;&lt;br /&gt;    onClick&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aOnClick;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(IBAction)startAuth:(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sender&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br /&gt;        [&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt; performSelector:onClick withObject:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;start&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] ;&lt;br /&gt;    } &lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)viewDidLoad {&lt;br /&gt;    [super viewDidLoad];&lt;br /&gt;    textView.font&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[UIFont systemFontOfSize:&lt;/span&gt;&lt;span style="color: #800080;"&gt;15&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;    [startBtn setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;btn_h_bg&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;12.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;14.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateNormal];&lt;br /&gt;    [startBtn setBackgroundImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;btn_h_bg&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;12.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;14.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] forState:UIControlStateHighlighted];&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)dealloc {&lt;br /&gt;    [textView release];&lt;br /&gt;    [startBtn release];&lt;br /&gt;    [super dealloc];&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;九、接下来我们用IB来处理界面双击InfoViewController.xib打开，然后设定View到合适的大小尺寸，并且比较重要的是要把这个View的Background设置成Clear Color也就是透明了，其他的就是把相应的TextView Button Label拖到View进行适当布局，大概效果如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011053112140278.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;完成控件布局后还需要进行连接操作，完成后如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011053112150784.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;10、在步骤6中我们只完成LoginViewController.h文件，然后去做InfoViewController了，现在我们继续来完成LoginViewController.m文件，首先是在viewDidLoad方法中进行sqlite数据库中账号检查，并且实例化SDK中的BlogClient对象blog，具体代码如下，对于这个blog对象提供了oauth认证、微博获取、微博发布等一系列跟微博相关的方法，有兴趣的同学可以读一下sdk的源代码，相信会很有帮助。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#define&lt;/span&gt;&lt;span style="color: #000000;"&gt; kOAuthConsumerKey @"3983859935"    &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#define&lt;/span&gt;&lt;span style="color: #000000;"&gt; kOAuthConsumerSecret @"201fea7b1e1203a76a10f3be570f5abb"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@implementation&lt;/span&gt;&lt;span style="color: #000000;"&gt; LoginViewController&lt;br /&gt;&lt;br /&gt;...................&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;如果数据库中已经有帐号记录那么取第一条用户信息进行显示，否则显示授权认证开始对话框&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)showUserInfo&lt;br /&gt;{&lt;br /&gt;    Sqlite &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;sqlite&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[Sqlite alloc] init];&lt;br /&gt;    self.userList&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[sqlite getUserList]; &lt;br /&gt;    [sqlite release];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (self.userList) {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; ([self.userList count]&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;        {&lt;br /&gt;            infoViewController&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[InfoViewController alloc] init]; &lt;br /&gt;            dialog&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[UIDialogWindow alloc]initWithView:infoViewController.view];&lt;br /&gt;            [infoViewController setDelegate:self onClick:@selector(startAuth:)];&lt;br /&gt;            [dialog show];&lt;br /&gt;        }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;.............................&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        }&lt;br /&gt;    }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;        NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;no&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)viewDidLoad {&lt;br /&gt;    [super viewDidLoad];&lt;br /&gt;    [self showUserInfo];&lt;br /&gt;    blog&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[BlogClient alloc] initWithConsumerKey:kOAuthConsumerKey consumerSecret:kOAuthConsumerSecret];&lt;br /&gt;}&lt;br /&gt;......................&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;11、上面的showUserInfo方法中当检查到sqlite数据库中没有账号记录的时候，弹出信息提示窗口提醒用户进行授权认证，当用户点击开始按钮后执行startAuth:方法，代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)startAuth:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)txt&lt;br /&gt;{&lt;br /&gt;    [dialog close];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (blog) {&lt;br /&gt;        UIViewController &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;controller&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[blog getOAuthViewController:self];&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (controller) {&lt;br /&gt;            [self presentModalViewController: controller animated: YES];&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;    }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;        NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;no blog&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;12、上面的startAuth会获取blog提供的认证view进行显示，效果见最上面的（&lt;span style="color: #0000ff;"&gt;图7&lt;/span&gt;），让用户输入账号和密码进行授权认证，授权成功后会执行LoginViewController之中的OAuthViewControllerOk方法，取消会执行OAuthViewControllerCancel方法。代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;取消授权认证后执行&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)OAuthViewControllerCancel: (NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) text&lt;br /&gt;{&lt;br /&gt;    [self showUserInfo];&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;完成授权认证后执行&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)OAuthViewControllerOk: (NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) text&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (blog) {&lt;br /&gt;        [blog show:blog.oauth.userID user_id:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@""&lt;/span&gt;&lt;span style="color: #000000;"&gt; screen_name:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@""&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;: self  onSuccess:@selector(getUserSuccess: responseText:) onFail:@selector(getUserFail: error:)];&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;13、上面的OAuthViewControllerOk，会继续调用blog获取用户信息的方法，把当前用户名、id、头像等信息并且保存到sqlite库中，代码如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;根据id获取用户信息并且保存到数据库&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)getUserSuccess:(NSNumber &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)statusCode responseText:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)data&lt;br /&gt;{&lt;br /&gt;    NSObject &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;obj &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [data JSONValue];&lt;br /&gt;    User &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;user&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[User alloc] initWithDictionary:(NSDictionary &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)obj];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (user) {&lt;br /&gt;        user.key&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[blog.oauth key];&lt;br /&gt;        user.secret&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[blog.oauth secret];&lt;br /&gt;        Sqlite &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;sqlite&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[Sqlite alloc] init];&lt;br /&gt;        BOOL sucess&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[sqlite addUser:user];&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sucess) {&lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;        [sqlite release];        &lt;br /&gt;    }&lt;br /&gt;    [self showUserInfo];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;根据id获取用户信息失败&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)getUserFail:(NSNumber &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)statusCode error:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)data&lt;br /&gt;{&lt;br /&gt;    NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;get user Error is:%@&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,data);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
到处，我们成功了完成了用户的OAuth授权认证，并且把账号相关信息保存到了sqlite库中，相关信息不包括用户的账号和密码，只有昵称、id、Access Token、Access Secret了，这样已经足够我们登录微博使用了。&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2062360.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/05/31/2062360.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hll2008/archive/2011/05/30/2063577.html</id><title type="text">iphone开发我的新浪微博客户端-用户登录自定义弹出窗口篇(1.2)</title><summary type="text">本篇的目的是开发一个自定义的弹出对话窗口组件，就是上面图6中半透明的信息提示窗口，其实系统类库中已经有UIActionSheet、UIAlertView能做到这样的功能组件，但是显示外观不怎么美观而且跟我的这个设计不怎么配，同时这2个组件的外观自定义性很差几乎改变不了显示外观，所以决定自己开发一个组件。实现的思路是这样的，做一个继承自UIWindow组件的组件的对象，这样这个组件也就是一个UIWindow了然后在这个UIWindow中添加相应的半透明View达到显示效果的目的，当我们需要显示弹出窗口只需要把这个UIWindow设置为主显示窗口即可，比如执行代码：[self makeKeyAn.</summary><published>2011-05-30T13:34:00Z</published><updated>2011-05-30T13:34:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2011/05/30/2063577.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2011/05/30/2063577.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913044359.png" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 本篇的目的是开发一个自定义的弹出对话窗口组件，就是上面图6中半透明的信息提示窗口，其实系统类库中已经有UIActionSheet、UIAlertView能做到这样的功能组件，但是显示外观不怎么美观而且跟我的这个设计不怎么配，同时这2个组件的外观自定义性很差几乎改变不了显示外观，所以决定自己开发一个组件。实现的思路是这样的，做一个继承自UIWindow组件的组件的对象，这样这个组件也就是一个UIWindow了然后在这个UIWindow中添加相应的半透明View达到显示效果的目的，当我们需要显示弹出窗口只需要把这个UIWindow设置为主显示窗口即可，比如执行代码：[self makeKeyAndVisible]。实现的思路很简单了，现在开始具体动手。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;一、用Xcode打开上一篇完成的工程然后新建名为UIDialogWindow的Objective-C class类型的文件，这个UIDialogWindow里有3个从上到下的UIView组件和1个UIImageView构成，分别是作为根View的superView,作为遮罩view的backgroundView,作为半透明的圆角背景图view的backgroundImage,作为窗口显示内容view的view,关于这个内容view有点特别，这个由使用这个UIDialogWindow时候才进行提供，因为每个地方使用弹窗呈现的内容肯定是大不相同了，只有这样才能提高组件的灵活性。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;二、打开UIDialogWindow.h文件，具体代码如下，在这个文件中定义了上面提到的4个view,并且一个初始化方法，一个显示窗口方法，一个关闭显示窗口方法这些方法基本上能完成一个弹出窗口的功能任务了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Foundation&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;Foundation.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;QuartzCore&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;QuartzCore.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Global.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; UIDialogWindow : UIWindow {&lt;br /&gt;    UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;view;&lt;br /&gt;    UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;superView;&lt;br /&gt;    UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;backgroundView;&lt;br /&gt;    UIImageView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;backgroundImage;&lt;br /&gt;    BOOL isClose;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@property (nonatomic,retain)UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;view;&lt;br /&gt;@property (nonatomic,retain)UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;superView;&lt;br /&gt;@property (nonatomic,retain)UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;backgroundView;&lt;br /&gt;@property (nonatomic,retain)UIImageView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;backgroundImage;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(UIDialogWindow &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)initWithView:(UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aView;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)show;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)close;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 二、打开UIDialogWindow.m文件，首先我们来完成初始化方法的编写，初始化方法就是把上面提到的4个view按照一定的顺序添加到window中，具体代码如下,在这里需要注意的是这个弹出窗口的显示大小右内容view的尺寸决定，在初始化方法中会先获取内容view的尺寸，然后根据这个尺寸调整其他3个view的尺寸。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(UIDialogWindow &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)initWithView:(UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)aView&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (self&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[super init]) {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;内容view&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        self.view&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;aView;&lt;br /&gt;        &lt;br /&gt;        [self setFrame:[[UIScreen mainScreen]bounds]];&lt;br /&gt;        self.windowLevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;UIWindowLevelStatusBar;&lt;br /&gt;        self.backgroundColor&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[UIColor colorWithRed:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; green:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; blue:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; alpha:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0.1&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;        &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;根view&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;sv&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[UIView alloc] initWithFrame:[self bounds]];&lt;br /&gt;        self.superView&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;sv;&lt;br /&gt;        [superView setAlpha:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;        [self addSubview:superView];&lt;br /&gt;        [sv release];&lt;br /&gt;        &lt;br /&gt;        CGFloat d&lt;/span&gt;&lt;span style="color: #000000;"&gt;=-&lt;/span&gt;&lt;span style="color: #800080;"&gt;7.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        UIView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;bv&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[UIView alloc] initWithFrame:CGRectInset(CGRectMake(&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, self.view.bounds.size.width, self.view.bounds.size.height),d,d)];&lt;br /&gt;        self.backgroundView&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;bv;&lt;br /&gt;        &lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;圆角图片背景view&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        UIImageView &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;bi&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[UIImageView alloc] initWithImage:[[Global pngWithPath:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;dialog_bg2&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]stretchableImageWithLeftCapWidth:&lt;/span&gt;&lt;span style="color: #800080;"&gt;13.0&lt;/span&gt;&lt;span style="color: #000000;"&gt; topCapHeight:&lt;/span&gt;&lt;span style="color: #800080;"&gt;9.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;]];&lt;br /&gt;        self.backgroundImage&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;bi;&lt;br /&gt;        [backgroundImage setFrame:[backgroundView bounds]];&lt;br /&gt;        [backgroundView insertSubview:backgroundImage atIndex:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;        [backgroundView setCenter:CGPointMake(superView.bounds.size.width&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;, superView.bounds.size.height&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)];&lt;br /&gt;        [superView addSubview:backgroundView];&lt;br /&gt;        &lt;br /&gt;        CGRect frame&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;CGRectInset([backgroundView bounds], &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;d, &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;d);&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;显示内容view&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        [backgroundView addSubview:self.view];&lt;br /&gt;        [self.view setFrame:frame];&lt;br /&gt;        isClose&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;NO;&lt;br /&gt;        [bv release];&lt;br /&gt;        [bi release];&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; self;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&#xD;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 三、当初始化方法把这些view添加到window时同时设置了根view的为透明（[superView setAlpha:0.0f]），这样我们还是看不到显示的这个弹出窗口了因为透明了，这个时候我们在编写一个显示弹出窗口的方法，这个代码的实现非常的简单了，其实还可以考虑加入一定的动画效果，使得显示的过程更加的具有弹出的动态过程效果，具体代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;显示弹出窗口&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)show&lt;br /&gt;{&lt;br /&gt;    [self makeKeyAndVisible];&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    [superView setAlpha:&lt;/span&gt;&lt;span style="color: #800080;"&gt;1.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;]; &lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;span style="font-size: 14px;"&gt;&#xD;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 四、既然有显示方法当然还需要有关闭弹出窗口的方法，具体代码如下：&#xD;
&lt;/span&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="font-size: 14px;"&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)dialogIsRemoved&lt;br /&gt;{&lt;br /&gt;    isClose&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;YES;&lt;br /&gt;    [view removeFromSuperview];&lt;br /&gt;    view&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;nil;&lt;br /&gt;    [backgroundView removeFromSuperview];&lt;br /&gt;    backgroundView&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;nil;&lt;br /&gt;    [superView removeFromSuperview];&lt;br /&gt;    superView&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;nil;&lt;br /&gt;    [self setAlpha:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;    [self removeFromSuperview];&lt;br /&gt;    self&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;nil;&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)close&lt;br /&gt;{&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    [UIView setAnimationDidStopSelector:@selector(dialogIsRemoved)];&lt;br /&gt;    [superView setAlpha:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0.0f&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 五、到这里就差不多完成了主要的工作了，剩下的就是dealloc方法进行内存的释放工作了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 六、关于如何使用这个组件，提供如下的示例代码，可以参考，具体的在下一篇中会有具体的应用案例讲解。&lt;/span&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&lt;span style="font-size: 14px;"&gt;infoViewController=[[InfoViewController alloc] init]; &#xD;
dialog=[[UIDialogWindow alloc]initWithView:infoViewController.view];&#xD;
[infoViewController setDelegate:self onClick:@selector(startAuth:)];&#xD;
[dialog show];&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 总体来说这样的实现思路非常的简单明了，这个组件能完全替代UIAlertView组件了，并且这个具有很强的自定义性，无论是外观和功能，虽然在使用方面没有UIAlertView这样的简单，但是实现的效果非常不错了，这样只是完成了组件的开发，在下一篇中我们将实现上面图6的效果功能，就是这个组件的具体应用了，请关注了。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2063577.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/05/30/2063577.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hll2008/archive/2011/05/29/2061211.html</id><title type="text">iphone开发我的新浪微博客户端-用户登录准备篇(1.1)</title><summary type="text">首先说一下我这个的实现思路，登录支持多个账号，也就是说可以保存多个微博账号登录的时候选择其中一个登录。多个账号信息保存在sqlite的数据库中，每一个账号信息就是一条记录, 当用户启动微博客户端的时候去取保存在sqlite数据库中的账号记录信息，然后把这些在界面中以列表的形式展示出来，用户可以点击其中的一个账号进入微博，如果如果启动微博客户端的时候检查到sqlite数据库中一个账号都没有的时候，程序自动显示用户授权认证页面，本客户端是基于oauth认证实现的，所以使用新微博账号前需要进行授权认证，一个账号只需要第一次做一下授权认证然后会把user_id、Access Token和Access.</summary><published>2011-05-29T05:09:00Z</published><updated>2011-05-29T05:09:00Z</updated><author><name>水的右边</name><uri>http://www.cnblogs.com/hll2008/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hll2008/archive/2011/05/29/2061211.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hll2008/archive/2011/05/29/2061211.html"/><content type="html">&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913035025.png" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;首先说一下我这个的实现思路，登录支持多个账号，也就是说可以保存多个微博账号登录的时候选择其中一个登录。多个账号信息保存在sqlite的数据库中，每一个账号信息就是一条记录, 当用户启动微博客户端的时候去取保存在sqlite数据库中的账号记录信息，然后把这些在界面中以列表的形式展示出来，用户可以点击其中的一个账号进入微博，如果如果启动微博客户端的时候检查到sqlite数据库中一个账号都没有的时候，程序自动显示用户授权认证页面，本客户端是基于oauth认证实现的，所以使用新微博账号前需要进行授权认证，一个账号只需要第一次做一下授权认证然后会把user_id、Access Token和Access Secret以及用户名称和头像小图标一起保存到sqlite的数据库中，下次登录的时候可以不在需要输入账号和密码，直接在界面中点击已经选择的用户小图标进入微博。关于Access Token和Access Secret这个我就不解释了，不懂的可以google一下oauth的知识，其实我前面做android版本的微博客户端的时候写过一篇比较详细的介绍过关于oauth的随笔可以翻出来参考一下。&lt;/p&gt;&#xD;
&lt;p&gt;从上面的思路来看用户登录有两种可能性，第一种数据库中尚无任何账号信息；第二种数据库中已经包含了一个或以上的账号信息。这两种情况显示不同的用户界面，两种情况的实现过程看下面的描述。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913044359.png" /&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913051264.png" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;第一种情况实现过程：&lt;span style="color: #ff0000;"&gt;1.查询sqlite数据库&lt;/span&gt; --&amp;gt;&lt;span style="color: #0000ff;"&gt;2.无账号记录显示需要进行授权认证的提示信息界面（上图6）&lt;/span&gt; --&amp;gt;&lt;span style="color: #339966;"&gt;3.在上一步界面中点击开始按钮进入用户授权界面&lt;/span&gt;--&amp;gt;&lt;span style="color: #993366;"&gt;4.用户输入自己的微博账号和密码点击确定然后关闭用户授权界面（上图7）&lt;/span&gt;--&amp;gt;&lt;span style="color: #ff00ff;"&gt;5.程序根据用户的授权获取这个账号的信息保存到sqlite库&lt;/span&gt;--&amp;gt;&lt;span style="color: #00ccff;"&gt;6.显示用户登录选择界面默认账号就是用户刚刚授权的账号&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #00ccff;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913064271.png" /&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913065718.png" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000; font-size: 14px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;第二种情况实现过程：&lt;span style="color: #ff0000;"&gt;1.查询sqlite数据库&lt;/span&gt;&amp;nbsp;--&amp;gt;&lt;span style="color: #0000ff;"&gt;2.已有账号记录获取所有账号信息并且显示用户登录选择界面&lt;/span&gt;&amp;nbsp;--&amp;gt;&lt;span style="color: #008000;"&gt;3.读取上一次登录的账号作为界面的默认选择用户显示（如上图2）&lt;span style="color: #000000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;4.点击添加按钮显示账号添加界面（如上图4）&lt;/span&gt;&lt;span style="color: #000000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #00ccff;"&gt;5.点击切换按钮显示账号选择列表界面（如下图3）&lt;/span&gt;&lt;span style="color: #000000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #993366;"&gt;6.点击删除按钮显示账号删除确认界面（如下图5）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&lt;span style="color: #008000;"&gt;&lt;span style="color: #993366;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913074687.png" /&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052913075511.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 从上面的实现过程看涉及到的主要知识点：1.sqlite数据库操作(创建数据库、创建数据表、插入数据记录、读取数据记录)；2、oauth授权认证（已经由sdk实现了调用相关方法即可）；3、NSUserDefaults存取（用来记录上一次的登录账号）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;现在正式开始动手做一一些准备工作：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;一、到&amp;nbsp;&lt;a href="http://code.google.com/p/minblog4sina/"&gt;http://code.google.com/p/minblog4sina/&lt;/a&gt;（关于这个可以参看：&lt;a id="homepage1_HomePageDays_DaysList_DayItem_0_DayList_0_TitleUrl_0"  href="http://www.cnblogs.com/hll2008/archive/2011/05/28/2060851.html"&gt;iphone开发我的新浪微博客户端-开篇&lt;/a&gt;）把我的这个sdk项目源代码checkout到本地，然后用xcode打开这个工程，在这个sdk工程的基础上开发微博客户端应用。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;二、设计sqlite数据库用来保存用户账号信息，我是用firefox的一个名为SQLite Manager的插件来创建sqlite数据库，这个使用非常简单就不介绍了自己装起来就知道怎么使用，我用它创建了一个名为weibo.sqlite的数据库，然后这这个数据库中创建了一个名为loginUser的表用来保存账号信息，loginUser表的，这个表包含5个字段分别用来保存user_id、账号昵称、Access Token、Access Secret、账号小图标，具体如下图：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 14px; color: #000000;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/38096/2011052823041823.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;三、用xcode打开工程，然后把上一步完成的weibo.sqlite文件添加到工程的Resources文件夹中.&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;四、在工程中添加类型为Objective-C class名为Sqlite的类用来负责sqlite库的创建、记录的读取、记录的添加等操作，同时在Xcode的左边树Frameworks右键添加名为libsqlite3.dylib的Framework，这个类库封装了sqlite库的操作。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp; &amp;nbsp; 五、打开Sqlite.h添加如下代码，在这个文件中首先import了sqlite3.h，这个就是Frameworks中的libsqlite3.dylib类库，然后又import了User.h，这个是MinBlog4Sina的sdk中的用户账号对象类。又声明的4个方法分别是数据库初始化、获取用户记录列表、添加用户记录、删除用户记录。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #000000;"&gt;&#xD;
&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Foundation&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;Foundation.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;sqlite3.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;User.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; Sqlite : NSObject {&lt;br /&gt;    sqlite3 &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;database;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(Sqlite &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)init;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(NSMutableArray &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)getUserList;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(BOOL)addUser:(User &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)user;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(BOOL)delUser:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)name;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;六、打开Sqlite.m添加如下代码,这个文件里实现了上述的几个方法，所谓的数据库创建其实就是把上面第三个步骤中添加到工程的weibo.sqlite文件拷贝到本软件的目录中，在下面的-(Sqlite *)init方法中进行了拷贝操作。还有就是用户记录读取和添加中关于BLOB类型的数据处理，这里存储的是图片数据了，在添加的时候把图片转换成bytes类型，读取的时候把bytes类型转换成图片。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Sqlite.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; Sqlite(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)createDatabaseIfNeeded:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)filename;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)dataFilePath;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(BOOL)openDatabase;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)closeDatabase;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@implementation&lt;/span&gt;&lt;span style="color: #000000;"&gt; Sqlite&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;初始化数据库&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(Sqlite &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)init&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (self&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [super init]) {&lt;br /&gt;        [self createDatabaseIfNeeded:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;weibo.sqlite&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;    }&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; self;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(BOOL)delUser:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)name&lt;br /&gt;{&lt;br /&gt;    BOOL sucess&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[self openDatabase];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sucess) {&lt;br /&gt;        NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[NSString alloc] initWithFormat:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;delete from loginUser where screen_name='%@'&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,name];&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorMsg;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sqlite3_exec(database, [sql UTF8String], NULL, NULL, &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorMsg)&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQLITE_OK) {&lt;br /&gt;            NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;del User error:%s&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,errorMsg);&lt;br /&gt;            sqlite3_free(errorMsg);&lt;br /&gt;        }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;        &lt;br /&gt;        }&lt;br /&gt;        [sql release];&lt;br /&gt;    }&lt;br /&gt;    [self closeDatabase];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; sucess;&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;添加用户记录&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(BOOL)addUser:(User &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)user&lt;br /&gt;{&lt;br /&gt;    BOOL sucess&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[self openDatabase];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sucess) {&lt;br /&gt;        NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[NSString alloc] initWithFormat:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;insert into loginUser(user_id,screen_name,key,secret,icon)values(?,?,?,?,?)&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;        sqlite3_stmt &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;statement;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sqlite3_prepare_v2(database, [sql UTF8String], &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;statement, nil)&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQLITE_OK)&lt;br /&gt;        {&lt;br /&gt;    &lt;br /&gt;            NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;uid&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[NSString stringWithFormat:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%@&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,user.userId];&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;user_idChar&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[uid UTF8String];&lt;br /&gt;            sqlite3_bind_text(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, user_idChar, strlen(user_idChar), NULL);&lt;br /&gt;            &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;screen_nameChar&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[user.screen_name UTF8String];&lt;br /&gt;            sqlite3_bind_text(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;, screen_nameChar, strlen(screen_nameChar), NULL);&lt;br /&gt;            &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;keyChar&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[user.key UTF8String];&lt;br /&gt;            sqlite3_bind_text(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;, keyChar, strlen(keyChar), NULL);&lt;br /&gt;            &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;secretChar&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[user.secret UTF8String];&lt;br /&gt;            sqlite3_bind_text(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;, secretChar, strlen(secretChar), NULL);&lt;br /&gt;            &lt;br /&gt;            NSData &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;imageData &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:user.profile_image_url]];&lt;br /&gt;            sqlite3_bind_blob(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;, [imageData bytes], [imageData length], NULL);&lt;br /&gt;            &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(sqlite3_step(statement)&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQLITE_DONE)&lt;br /&gt;            {&lt;br /&gt;                NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;done&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;            }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;                NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;error&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;            }&lt;br /&gt;            sqlite3_finalize(statement);&lt;br /&gt;        }&lt;br /&gt;        [sql release];&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    }&lt;br /&gt;    [self closeDatabase];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; sucess;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;获取用户记录列表&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(NSMutableArray &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)getUserList&lt;br /&gt;{&lt;br /&gt;    NSMutableArray &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;list;&lt;br /&gt;    BOOL sucess&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[self openDatabase];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sucess) {&lt;br /&gt;        NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;query&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;select * from loginUser&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        sqlite3_stmt &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;statement;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sqlite3_prepare_v2(database, [query UTF8String], &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;statement, nil)&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQLITE_OK)&lt;br /&gt;        {&lt;br /&gt;            list&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[[NSMutableArray alloc] init]autorelease];&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sqlite3_step(statement)&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQLITE_ROW) {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;user_idChar&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sqlite3_column_text(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;screen_nameChar&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sqlite3_column_text(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;keyChar&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sqlite3_column_text(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;secretChar&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)sqlite3_column_text(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; bytes &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sqlite3_column_bytes(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;value &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; sqlite3_column_blob(statement, &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                &lt;br /&gt;                NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;user_id&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[NSString alloc] initWithUTF8String:user_idChar];&lt;br /&gt;                NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;screen_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[NSString alloc] initWithUTF8String:screen_nameChar];&lt;br /&gt;                NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;key&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[NSString alloc] initWithUTF8String:keyChar];&lt;br /&gt;                NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;secret&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[NSString alloc] initWithUTF8String:secretChar];&lt;br /&gt;                UIImage &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;icon;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;( value &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; NULL &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; bytes &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; ){&lt;br /&gt;                    NSData &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;data &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [NSData dataWithBytes:value length:bytes];&lt;br /&gt;                    icon&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[UIImage imageWithData:data];&lt;br /&gt;                }&lt;br /&gt;                User &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;user&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[User alloc] init];&lt;br /&gt;                user.userId&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;user_id;&lt;br /&gt;                user.name&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;screen_name;&lt;br /&gt;                user.key&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;key;&lt;br /&gt;                user.secret&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;secret;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (icon) {&lt;br /&gt;                    user.icon&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;icon;&lt;br /&gt;                }&lt;br /&gt;                &lt;br /&gt;                [list addObject:user];&lt;br /&gt;                [user release];&lt;br /&gt;                [user_id release];&lt;br /&gt;                [screen_name release];&lt;br /&gt;                [key release];&lt;br /&gt;                [secret release];&lt;br /&gt;            }&lt;br /&gt;            sqlite3_finalize(statement);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    [self closeDatabase];&lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; list;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;根据是否已经存在数据库决定是否要创建数据库&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)createDatabaseIfNeeded:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)filename&lt;br /&gt;{&lt;br /&gt;    &lt;br /&gt;    NSAutoreleasePool &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;pool&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[NSAutoreleasePool alloc] init];&lt;br /&gt;    NSFileManager &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;filemanage&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[NSFileManager defaultManager];&lt;br /&gt;    NSArray &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;paths&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);&lt;br /&gt;    NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;documentsDirectory&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[paths objectAtIndex:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;    NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;writableDBPath&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[documentsDirectory stringByAppendingPathComponent:filename];&lt;br /&gt;    BOOL sucess&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[filemanage fileExistsAtPath:writableDBPath];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sucess) {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;    }&lt;br /&gt;    NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;defaultDBPath&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:filename];&lt;br /&gt;    NSError &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;error;&lt;br /&gt;    sucess&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[filemanage copyItemAtPath:defaultDBPath toPath:writableDBPath error:&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;error];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;sucess) {&lt;br /&gt;        NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;create Database rror:%@&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,[error localizedDescription]);&lt;br /&gt;    }&lt;br /&gt;    [pool release];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;获取数据库文件路径&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)dataFilePath&lt;br /&gt;{&lt;br /&gt;    NSArray &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;paths&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);&lt;br /&gt;    NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;documentPath&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[[paths objectAtIndex:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;] stringByAppendingPathComponent:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;weibo.sqlite&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; documentPath;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;打开数据库&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(BOOL)openDatabase&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; returnValue&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;sqlite3_open([[self dataFilePath] UTF8String], &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;database);&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (returnValue&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQLITE_OK) {&lt;br /&gt;        sqlite3_close(database);&lt;br /&gt;        NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;open Database error:%@&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,sqlite3_errmsg(database));&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; NO;&lt;br /&gt;    }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; YES;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;关闭数据库&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt;)closeDatabase&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (sqlite3_close(database)&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt;SQLITE_OK) {&lt;br /&gt;        NSLog(&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;close Database error:%@&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,sqlite3_errmsg(database));&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;七、在工程中添加类型为Objective-C class名为Global的类用来提供一些非常常用的公用方法。&lt;/p&gt;&#xD;
&lt;p&gt;八、打开Global.h添加如下代码，声明了2个方法，一个是获取png的图片资源、另外一个是进行时间格式化输出的方法，这2个方法都是被声明成+类型，这样方便使用,这2个方法在后面篇章中经常会用到。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Foundation&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;Foundation.h&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@interface&lt;/span&gt;&lt;span style="color: #000000;"&gt; Global : NSObject &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;(UIImage &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) pngWithPath:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)path;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) dateInFormat: (time_t)dateTime format:(NSString&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) stringFormat;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;九、打开Global.m添加如下代码&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;#import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Global.h&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@implementation&lt;/span&gt;&lt;span style="color: #000000;"&gt; Global&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;(UIImage &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) pngWithPath:(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;)path&lt;br /&gt;{&lt;br /&gt;    NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;fileLocation &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [[NSBundle mainBundle] pathForResource:path ofType:&lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;png&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]; &lt;br /&gt;    NSData &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;imageData &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [NSData dataWithContentsOfFile:fileLocation]; &lt;br /&gt;    UIImage &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;img&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;[UIImage imageWithData:imageData];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; img;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;(NSString &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) dateInFormat: (time_t)dateTime format:(NSString&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;) stringFormat &lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; buffer[&lt;/span&gt;&lt;span style="color: #800080;"&gt;80&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;const&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;format &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; [stringFormat UTF8String];&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;struct&lt;/span&gt;&lt;span style="color: #000000;"&gt; tm &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; timeinfo;&lt;br /&gt;    timeinfo &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; localtime(&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;dateTime);&lt;br /&gt;    strftime(buffer, &lt;/span&gt;&lt;span style="color: #800080;"&gt;80&lt;/span&gt;&lt;span style="color: #000000;"&gt;, format, timeinfo);&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; [NSString  stringWithCString:buffer encoding:NSUTF8StringEncoding];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;@end&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;到处准备篇的工作就已经算是完成了，主要的编码工作就是sqlite的数据库操作了，在下一篇中我们会在这个基础上开始用户功能的开发。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hll2008/aggbug/2061211.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hll2008/archive/2011/05/29/2061211.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
