我已经以编程方式为iPad开发了一个程序。我有一个SplitViewController,RootViewController和DetailViewController 我能够将UITableViewController作为弹出窗口 如何通过编程方式单击UITableViewController的每个索引,在DetailViewController上显示UILabel? 提前谢谢..
答案 0 :(得分:0)
Apple在XCode中为您提供的模板完全符合您的要求。
答案 1 :(得分:0)
首先,我意识到原始海报可能早已从需要回答这个问题开始。由于我最近需要搜索类似的问题,没有找到合适的问题/答案,我决定开始自己挖掘,并想出了一个可能对其他人有用的答案。
正如@Wes所提到的,XCode中为“Master-Detail Application”提供的模板确实创建了一个有用的跳跃点来创建一个带有视图控制器的通用应用程序:
XCode 4.2新项目对话
一定要选择Universal ..
然而,我所发现的并非本质上显而易见的是,当将应用程序用作iPhone应用程序时,您将在detailViewController中调用方法setDetailItem:
(后者将调用{{ 1}}),你不会自动在应用程序的iPad版本中发生这种情况。这是因为masterViewController中的_detailViewController ivar(由detailViewController属性映射)默认为nil。
这是因为在iPhone版本中,当您选择详细信息项时,默认代码会检查此iVar是否为零,并为您自动创建一个。然而,在iPad版本中,configureView
已经为您创建了一个detailViewController,以及一个masterViewController。为了使我的代码工作,我所做的是在[appDelegate application: didFinishLaunchingWithOptions:]
方法中添加以下行,如下所示:
[appDelegate application: didFinishLaunchingWithOptions:]
第二行会在app start上自动为您选择第一个详细信息项。这在默认的演示代码中是安全的,因为它设置为处理1个细节。如果您要在代码中更改它(例如,通过从其他来源动态创建详细信息项),您当然需要确保在第0位选择有效的详细信息项。
该方法(在我添加这两行之后)现在看起来像这样:
masterViewController.detailViewController = detailViewController;
[masterViewController tableView:masterViewController.tableView
didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
我希望这对你有所帮助。