<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iPhoneGeek 爱疯极客 &#187; iPad</title>
	<atom:link href="http://www.iphone-geek.cn/tag/ipad/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iphone-geek.cn</link>
	<description>iPhone 新闻，编程，技巧与提示，代码，教程</description>
	<lastBuildDate>Thu, 08 Dec 2011 01:18:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>iPad 编程教程 &#8211; Hello World++</title>
		<link>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/ipad-%e7%bc%96%e7%a8%8b%e6%95%99%e7%a8%8b-hello-world</link>
		<comments>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/ipad-%e7%bc%96%e7%a8%8b%e6%95%99%e7%a8%8b-hello-world#comments</comments>
		<pubDate>Wed, 07 Apr 2010 05:07:44 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[用户界面]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=923</guid>
		<description><![CDATA[概述

随着iPad的发布，我想很多人开始绞尽脑汁试图在新一轮的“淘金热”中抢占一块市场。iCodeBlog将推出一系列iPad教程帮助大家。

由于iPad使用iPhone同样的SDK，所有代码看上去完全一样。实际上，看看最新和修改了的API类，你就会发现大部分是有关用户界面的。这是一个好消息，因为我们都对iPhone编程有了一定的经验。

此教程被称为“Hello World”，实际上它远远不止这些。首先，我假定你们已经具有iPhone/Objective-C的编程经验。


我们要做什么

今天的教程，我将展示怎样创建一个iPad项目，使用UISplitViewController显示两个单独的窗格。我还将涉及一些新的设计/UI模式并介绍iPad编程。

此项目将基于使用UITableView显示水果列表教程 。我们将扩展其中一个范例，如下所示：



本文将使用UISplitViewController在左窗格显示一个UITableView，而在右窗格显示一个具有UIImageView子视窗的UIView。实际上创建这样一个项目非常简单，因为项目模板提供了大部分初始代码。
开始


从http://developer.apple.com/iphone/下载SDK 3.2。iPad模拟器包括在了SDK中。 
下载本项目所需的资源文件 iPadHelloWorldResources.zip 。 

创建项目

创建iPad项目与iPhone项目没有分别。打开XCode并选择File-&#62;New Project，你将发现有一个新的Split View-Based Application选项。选择它并命名为iPadHelloWorld。

这将创建一个UITableView位于左窗格，UIView位于右窗格的应用程序。它还甚至提供了一些示例数据。下列文件将被加入到项目中。



各文件的简单介绍如下：


iPadHelloWorldAppDelegate – 类似于 app delegate。在 application:didFinishLaunchingWithOptions 方法中，创建了具有MasterViewController和 DetailViewController的UISplitViewController。 
MasterViewController – UITableViewController。它将处理左方视窗。 
DetailViewController – 它将处理右方视窗。当用户选择左方列表中不同行时，我们将在此视窗中做相应更新。 


按“Build and Run”测试一下。

注意：当你运行此程序时，你只能看到主视窗，这是因为模拟器运行于垂直模式。选取 “Hardware -&#62; Rotate Left/Right”将使模拟器旋转。你还可以通过按下键盘上的CMD-&#62;Arrow Left/Right 键获得同样效果。

 

导入项目图像

下一步你需要导入项目需要的图像。将下载的资源文件解压，并拖入称为“Resources-iPad”的文件夹下。
XCode 将提示你复制这些文件，选择“Yes”并按下OK。



请包括四个图像文件以及fruits.plist。
显示水果列表

显示水果列表与显示其他UITableView中的数据并无区别。打开MasterViewController.h 加入水果数组定义。
#import   

@class DetailViewController;   

@interface MasterViewController : UITableViewController {
    DetailViewController *detailViewController;
    NSArray * fruits;
} 

@property [...]]]></description>
			<content:encoded><![CDATA[<h3>概述</h3>
<p><br class="spacer_" /></p>
<p>随着iPad的发布，我想很多人开始绞尽脑汁试图在新一轮的“淘金热”中抢占一块市场。iCodeBlog将推出一系列iPad教程帮助大家。</p>
<p><br class="spacer_" /></p>
<p>由于iPad使用iPhone同样的SDK，所有代码看上去完全一样。实际上，看看<a href="http://developer.apple.com/iphone/prerelease/library/releasenotes/General/WhatsNewIniPhoneOS/Articles/iPhoneOS3_2.html#//apple_ref/doc/uid/TP40009337-SW1">最新和修改了的API类</a>，你就会发现大部分是有关用户界面的。这是一个好消息，因为我们都对iPhone编程有了一定的经验。</p>
<p><br class="spacer_" /></p>
<p>此教程被称为“Hello World”，实际上它远远不止这些。首先，我假定你们已经具有iPhone/Objective-C的编程经验。</p>
<p><br class="spacer_" /></p>
<p><span id="more-923"></span></p>
<h3>我们要做什么</h3>
<p><br class="spacer_" /></p>
<p>今天的教程，我将展示怎样创建一个iPad项目，使用UISplitViewController显示两个单独的窗格。我还将涉及一些新的设计/UI模式并介绍iPad编程。</p>
<p><br class="spacer_" /></p>
<p>此项目将基于<a href="http://icodeblog.com/2008/08/08/iphone-programming-tutorial-populating-uitableview-with-an-nsarray/">使用UITableView显示水果列表教程</a> 。我们将扩展其中一个范例，如下所示：</p>
<p><br class="spacer_" /></p>
<p><a href="http://icodeblog.com/wp-content/uploads/2010/02/watermelon-ss.png"><img title="watermelon-ss" src="http://icodeblog.com/wp-content/uploads/2010/02/watermelon-ss.png" alt="" width="500" height="387" /></a></p>
<p><br class="spacer_" /></p>
<p>本文将使用UISplitViewController在左窗格显示一个UITableView，而在右窗格显示一个具有UIImageView子视窗的UIView。实际上创建这样一个项目非常简单，因为项目模板提供了大部分初始代码。</p>
<h3>开始</h3>
<p><br class="spacer_" /></p>
<ol>
<li>从<a href="http://developer.apple.com/iphone/">http://developer.apple.com/iphone/</a>下载SDK 3.2。iPad模拟器包括在了SDK中。 </li>
<li>下载本项目所需的资源文件 <a href="http://icodeblog.com/wp-content/uploads/2010/02/iPadHelloWorldResources.zip">iPadHelloWorldResources.zip</a> 。 </li>
</ol>
<h3>创建项目</h3>
<p><br class="spacer_" /></p>
<p>创建iPad项目与iPhone项目没有分别。打开XCode并选择File-&gt;New Project，你将发现有一个新的Split View-Based Application选项。选择它并命名为iPadHelloWorld。</p>
<p><a href="http://icodeblog.com/wp-content/uploads/2010/02/Screen-shot-2010-02-01-at-12.37.12-PM.png"><img title="Screen shot 2010-02-01  at 12.37.12 PM" src="http://icodeblog.com/wp-content/uploads/2010/02/Screen-shot-2010-02-01-at-12.37.12-PM.png" alt="" width="544" height="418" /></a></p>
<p>这将创建一个UITableView位于左窗格，UIView位于右窗格的应用程序。它还甚至提供了一些示例数据。下列文件将被加入到项目中。</p>
<p><br class="spacer_" /></p>
<p><a href="http://icodeblog.com/wp-content/uploads/2010/02/Screen-shot-2010-02-02-at-11.02.17-AM.png"><img title="Screen shot 2010-02-02  at 11.02.17 AM" src="http://icodeblog.com/wp-content/uploads/2010/02/Screen-shot-2010-02-02-at-11.02.17-AM.png" alt="" width="247" height="349" /></a></p>
<p><br class="spacer_" /></p>
<p>各文件的简单介绍如下：</p>
<p><br class="spacer_" /></p>
<ul>
<li>iPadHelloWorldAppDelegate – 类似于 app delegate。在 application:didFinishLaunchingWithOptions 方法中，创建了具有MasterViewController和 DetailViewController的UISplitViewController。 </li>
<li>MasterViewController – UITableViewController。它将处理左方视窗。 </li>
<li>DetailViewController – 它将处理右方视窗。当用户选择左方列表中不同行时，我们将在此视窗中做相应更新。 </li>
</ul>
<p><br class="spacer_" /></p>
<p>按“Build and Run”测试一下。</p>
<p><br class="spacer_" /></p>
<blockquote><p><strong>注意：当你运行此程序时，你只能看到主视窗，这是因为模拟器运行于垂直模式。选取 “Hardware -&gt; Rotate Left/Right”将使模拟器旋转。你还可以通过按下键盘上的CMD-&gt;Arrow Left/Right 键获得同样效果。</strong></p>
<p><strong><br />
 </strong></p>
</blockquote>
<h3>导入项目图像</h3>
<p><br class="spacer_" /></p>
<p>下一步你需要导入项目需要的图像。将下载的资源文件解压，并拖入称为“Resources-iPad”的文件夹下。</p>
<p>XCode 将提示你复制这些文件，选择“Yes”并按下OK。</p>
<p><br class="spacer_" /></p>
<p><a href="http://icodeblog.com/wp-content/uploads/2010/02/Screen-shot-2010-02-02-at-11.30.31-AM.png"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="Screen shot 2010-02-02  at 11.30.31 AM" src="http://icodeblog.com/wp-content/uploads/2010/02/Screen-shot-2010-02-02-at-11.30.31-AM.png" alt="" width="450" height="413" /></a></p>
<p><br class="spacer_" /></p>
<p>请包括四个图像文件以及fruits.plist。</p>
<h3>显示水果列表</h3>
<p><br class="spacer_" /></p>
<p>显示水果列表与显示其他UITableView中的数据并无区别。打开MasterViewController.h 加入水果数组定义。</p>
<pre>#import   

@class DetailViewController;   

@interface MasterViewController : UITableViewController {
    DetailViewController *detailViewController;
    NSArray * fruits;
} 

@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;
@property (nonatomic, retain) NSMutableArray *fruits;  

@end </pre>
<p>如你所见，这里没有任何新的东西。我们只是简单的定义了一个水果数组，并为其创建属性。</p>
<p><br class="spacer_" /></p>
<p>我们将从plist中加载水果数据。当你不想使用数据库时，从plist文件加载数据是一种方便而快捷的方法。</p>
<p><br class="spacer_" /></p>
<p>打开MasterViewController.m 在 viewDidLoad 方法中加入下列代码：</p>
<pre>- (void)viewDidLoad {
    [super viewDidLoad];
    self.fruits = [[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]
        pathForResource:@"fruits" ofType:@"plist"]] retain];
}</pre>
<p>fruits.plist文件实际上是一个写入文件的数组。如果你打开它，你就会发现它十分类似于XML。在为数组赋值后，我们要实现UITableView delegate 和 datasource 方法以显示列表。</p>
<p><strong> </strong></p>
<p><br class="spacer_" /></p>
<p><strong>UITableView datasource 方法</strong></p>
<pre>- (NSInteger)tableView:(UITableView *)aTableView
    numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [fruits count];
}   </pre>
<pre>- (UITableViewCell *)tableView:(UITableView *)tableView
    cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
    // Dequeue or create a cell of the appropriate type.
    static NSString *CellIdentifier = @"CellIdentifier";  
    UITableViewCell *cell =
        [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
           reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryNone;
    }   // Get the object to display and set the value in the cell.
    cell.textLabel.text = [self.fruits objectAtIndex:indexPath.row];
    return cell;
}</pre>
<p>没有什么特殊的东西… 我们首先告诉tableview 我们需要 fruits.count (等于4) 行。然后在各tableview单元中显示水果的名称。</p>
<p><br class="spacer_" /></p>
<p><strong>UITableView delegate 方法</strong></p>
<p><strong><br />
 </strong></p>
<pre>- (void)tableView:(UITableView *)aTableView
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
    /* When a row is selected, set the detail view controller's detail item
       to the item associated with the selected row.
     */
    detailViewController.detailItem = [self.fruits objectAtIndex: indexPath.row];
}
</pre>
<p>这里我们简单地将detailViewController 的detailItem 属性设置为所需水果。我们将在随后介绍一下属性，现在我们需要知道的是它的类型是 <strong>id。</strong></p>
<p><strong> </strong></p>
<p>现在，按下“Build and Run”运行一下。你应该看到如下画面：</p>
<p><br class="spacer_" /></p>
<p><a href="http://icodeblog.com/wp-content/uploads/2010/02/tableview.png"><img title="tableview" src="http://icodeblog.com/wp-content/uploads/2010/02/tableview.png" alt="" width="500" height="387" /></a></p>
<p><br class="spacer_" /></p>
<p>它列出了水果的列表，但当你进行选择时，没有任何变化（当然detailView的标题会改变）。</p>
<p><br class="spacer_" /></p>
<p>下面，我们需要实现显示相应水果图像的代码。</p>
<p><br class="spacer_" /></p>
<h3>显示水果</h3>
<p><br class="spacer_" /></p>
<p>显示所选水果实际上非常简单。首先我们要在detailView中加入一个UIImageView。打开DetailViewController.h 加入下列代码：</p>
<pre>@interface DetailViewController : UIViewController  {  
    UIPopoverController *popoverController;
    UINavigationBar *navigationBar;  
    id detailItem;  
    IBOutlet UIImageView * fruitImageView;
}   

@property (nonatomic, retain) UIPopoverController *popoverController;
@property (nonatomic, retain) IBOutlet UINavigationBar *navigationBar; 
@property (nonatomic, retain) id detailItem;  
@property (nonatomic, retain) IBOutlet UIImageView * fruitImageView;   

@end</pre>
<p>除了添加IBOutlet UIImageView外的所有代码都是由项目模板生成的。添加此行代码后，在Interface Builder中打开DetailView.xib。</p>
<p><br class="spacer_" /></p>
<p>在视窗中加入一个尺寸为500&#215;500的UIImageView。</p>
<p><br class="spacer_" /></p>
<p><a href="http://icodeblog.com/wp-content/uploads/2010/02/notitle.png"><img title="notitle" src="http://icodeblog.com/wp-content/uploads/2010/02/notitle.png" alt="" width="500" height="672" /></a></p>
<p><br class="spacer_" /></p>
<p>现在，选择File’s Owner 打开连接观察器 (Tools -&gt; connection inspector)。将imageView IBOutlet拖动到UIImageView 然后释放，将UIImageView 连接到你的outlet。</p>
<p><br class="spacer_" /></p>
<blockquote><p><strong>注意：如果你不希望图像变形，请将图像视窗的内容模式（content mode）设置为(在属性观察器attributes inspector中) Aspect Fit。</strong></p>
</blockquote>
<p><br class="spacer_" /></p>
<p>连接了imageview后，需要编写代码进行图像更新。关闭Interface Builder打开 DetailViewController.m 在setDetailItem 方法中加入下列代码：</p>
<pre>- (void)setDetailItem:(id)newDetailItem {
    if (detailItem != newDetailItem) {
        [detailItem release];
        detailItem = [newDetailItem retain];   // Update the view.
        navigationBar.topItem.title = detailItem;
	NSString * imageName = [NSString stringWithFormat:@"%@.png",detailItem];
	[self.fruitImageView setImage:[UIImage imageNamed:imageName]];
    }   if (popoverController != nil) {
        [popoverController dismissPopoverAnimated:YES];
    }
}</pre>
<p>大部分代码是由项目模板生成的，所以我不过多讨论。我添加的代码是根据水果的名称加载图像并随后设置其image属性。运行！下面是最终产品：</p>
<p><br class="spacer_" /></p>
<p><a href="http://icodeblog.com/wp-content/uploads/2010/02/cherry.png"><img title="cherry" src="http://icodeblog.com/wp-content/uploads/2010/02/cherry.png" alt="" width="500" height="387" /></a></p>
<h3>SplitViewController的另一个很酷的特性</h3>
<p><br class="spacer_" /></p>
<p>当出于垂直模式时，SplitViewController提供另一个称为UIPopOverView的新的UI元素。我们以后将就此提供教程。下面我仅给出示范图：</p>
<p><br class="spacer_" /></p>
<p><a href="http://icodeblog.com/wp-content/uploads/2010/02/popover.png"><img title="popover" src="http://icodeblog.com/wp-content/uploads/2010/02/popover.png" alt="" width="500" height="645" /></a></p>
<p><br class="spacer_" /></p>
<p>但设备处于垂直位置时，它将自动旋转视图并在“Master List”按钮按下时提供UIPopoverView。（另外，此按钮本身也是可以定制的）。</p>
<p><br class="spacer_" /></p>
<p>源码下载 <a href="http://icodeblog.com/wp-content/uploads/2010/02/iPadHelloWorld.zip">iPadHelloWorld.zip</a>.</p>
<p><br class="spacer_" /></p>
<h5>原文见：<a href="http://icodeblog.com/2010/04/05/ipad-programming-tutorial-hello-world/">iPad Programming Tutorial – Hello World++</a></h5>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e7%bc%96%e7%a8%8b/ipad-%e7%bc%96%e7%a8%8b%e6%95%99%e7%a8%8b-hello-world/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>iPad到底是什么？</title>
		<link>http://www.iphone-geek.cn/%e9%97%b2%e8%b0%88/ipad%e5%88%b0%e5%ba%95%e6%98%af%e4%bb%80%e4%b9%88%ef%bc%9f</link>
		<comments>http://www.iphone-geek.cn/%e9%97%b2%e8%b0%88/ipad%e5%88%b0%e5%ba%95%e6%98%af%e4%bb%80%e4%b9%88%ef%bc%9f#comments</comments>
		<pubDate>Wed, 03 Feb 2010 02:48:26 +0000</pubDate>
		<dc:creator>bagusflyer</dc:creator>
				<category><![CDATA[闲谈]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://www.iphone-geek.cn/?p=860</guid>
		<description><![CDATA[恕我孤陋寡闻，一直对Apple的平板电脑没有过多的关注，以为就是一台带触摸屏的Macbook。在我的Macbook Pro被盗后，还准备买一台进行iPhone的开发工作。但随着iPad新闻的发布，我发现iPad不过就是一台大号的iPod Touch。我觉得有下列弱点：


不支持后台运行 &#8211; 这无疑是iPad的致命弱点。如果说iPod Touch和iPhone不支持多任务是为了最优化的用户体验，我还可以理解。但作为一台拥有如此先进的OS的电脑，我不知为何Apple一直抱定这个设计理念。简直让人觉得回到了DOS时代。
不支持Flash &#8211; 仍然无法像使用普通浏览器一样访问Flash支持的网站。使其网络浏览功能大打折扣。
不带摄像头 &#8211; 在视频聊天如此流行的今天，在这样一个高端的设备上，加上一个前置摄像头应该是必备的选择吧？ 
大尺寸的屏幕 &#8211; 这也是缺点？没错。虽然我觉得大屏幕确实有许多好处（特别是看电子书），但是如果它具有Laptop或Tablet的尺寸而仅仅具有掌上电脑的功能，这应该是缺点多过优点了。另外，试想一下，拿着这么个大家伙在地铁上摇头晃脑地玩着保龄或赛车游戏，是不是有那么点脑残？


总而言之，我觉得iPad的设计理念互相矛盾，定位不明确，它不过是苹果公司另一个噱头，它的出现无非是进一步利用其极其成功的App Store模式，最大地获取利润的一种方式罢了，因此我并不看好它的前景，大家觉得呢？

]]></description>
			<content:encoded><![CDATA[<p>恕我孤陋寡闻，一直对Apple的平板电脑没有过多的关注，以为就是一台带触摸屏的Macbook。在我的Macbook Pro被盗后，还准备买一台进行iPhone的开发工作。但随着iPad新闻的发布，我发现iPad不过就是一台大号的iPod Touch。我觉得有下列弱点：</p>
<p><br class="spacer_" /></p>
<ul>
<li>不支持后台运行 &#8211; 这无疑是iPad的致命弱点。如果说iPod Touch和iPhone不支持多任务是为了最优化的用户体验，我还可以理解。但作为一台拥有如此先进的OS的电脑，我不知为何Apple一直抱定这个设计理念。简直让人觉得回到了DOS时代。</li>
<li>不支持Flash &#8211; 仍然无法像使用普通浏览器一样访问Flash支持的网站。使其网络浏览功能大打折扣。</li>
<li>不带摄像头 &#8211; 在视频聊天如此流行的今天，在这样一个高端的设备上，加上一个前置摄像头应该是必备的选择吧？ </li>
<li>大尺寸的屏幕 &#8211; 这也是缺点？没错。虽然我觉得大屏幕确实有许多好处（特别是看电子书），但是如果它具有Laptop或Tablet的尺寸而仅仅具有掌上电脑的功能，这应该是缺点多过优点了。另外，试想一下，拿着这么个大家伙在地铁上摇头晃脑地玩着保龄或赛车游戏，是不是有那么点脑残？</li>
</ul>
<p><br class="spacer_" /></p>
<p>总而言之，我觉得iPad的设计理念互相矛盾，定位不明确，它不过是苹果公司另一个噱头，它的出现无非是进一步利用其极其成功的App Store模式，最大地获取利润的一种方式罢了，因此我并不看好它的前景，大家觉得呢？</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iphone-geek.cn/%e9%97%b2%e8%b0%88/ipad%e5%88%b0%e5%ba%95%e6%98%af%e4%bb%80%e4%b9%88%ef%bc%9f/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

