我正在尝试为基于拆分视图的应用程序创建基础,因为在过去的几天里,我花了一些时间查看并尝试了不起作用,不完整或过时的教程。 / p>
我应该遵循哪些步骤,并在完成基本设置之后:
答案 0 :(得分:4)
本教程适用于初学者。如果您已经在Objective-c中编码了一段时间,那么您可能无法在这里学到任何东西。
在本教程之后,您将拥有一个基于拆分视图的应用程序,其中包含三个(或更多)不同的视图,以及用于浏览应用程序的弹出菜单。
第1步:获取一些Apple代码
从Apple获取(下载)MultiDetailsView示例代码。 http://developer.apple.com/library/ios/#samplecode/MultipleDetailViews/Introduction/Intro.html
此代码为我们提供了一个基于splitview的应用程序,其中包含2个不同的视图。除非你不知道这个代码存在,否则这没什么大不了的。
第2步:确保一切正常
在Xcode中打开项目。构建,然后运行项目以确保一切正常。当我尝试构建并运行应用程序时,我遇到了这个错误:
XCode could not find a valid private certificate/valid key-pair for this profile in your keychain
我意识到我的证书已经过时了(我猜这只是曝光,因为代码直接来自苹果?)。如果碰巧遇到同样的问题,请查看this主题。或者,您也可以从应用程序商店下载Xcode的最新版本。
无论如何,如果一切正常,您应该有以下两种观点:
第3步:添加我们自己的观点
Part a :创建文件
现在是时候添加更多观点了(这可能是你正在寻找的)。
转到文件 - >新文件......
如果你正在使用 Xcode 4 :选择Objective-C Class,那么对于子类选择UIViewController,并确保' Targeted For iPad'和'使用XIB用户界面'检查。
如果你正在使用 Xcode 3 :选择UIViewController子类,然后选中“针对iPad'和#39;使用XIB进行用户界面'
文件将显示在左侧菜单中,如果它们位于错误的位置,您可以将它们拖到相应的目录中(.h和.h应该在Classes下,并且.xib应该是在资源下)。
首先,将SecondDetailViewController.h的内容复制到.h文件,然后将SecondDetailViewController.m的内容复制到.m文件中。确保它最初说SecondDetailViewController
的任何地方,它现在都有你文件的名称。
我的.h档案:
我的.m文件:
B部分:RootViewController.m内容
接下来,打开RootViewController.m
目前,正在导入3个原始.h文件。我们需要添加我们刚刚创建的那个。
接下来,向下转到tableView方法,并将返回值从2更改为3.每次添加新视图时,都需要增加此数字! (即,如果您在完成本教程后添加了另一个视图,请将其更改为4)。从本质上讲,此方法只返回您拥有的视图数量。
正下方的方法可以处理菜单中显示的内容。我们需要在这里做一些改变。由于我们正在为if / else语句添加另一个选项,因此必须将原始else
更改为if else
,并且我们必须提供一个条件,在我们的示例中只是检查是否它是第二行(在索引1处)(indexPath.row == 1)
下一个方法处理要显示的视图。添加另一个if
语句。在第一行中,我将YourViewHereViewController
设置为绿色,您应该具有.h / .m文件的名称。然后,我有@"YourViewHereViewController"
红色,你应该有.xib文件的名称。
C部分:xib
最后但并非最不重要的是,我们需要处理我们的xib文件。首先打开SecondDetailView.xib并复制视图。然后将其粘贴到您创建的.xib文件中(删除可能存在的任何内容)。您可以通过双击文本来更改视图的标题。
最后要做的是行连接。按住Control键并单击文件的所有者,然后将其拖动到工具栏并选择toolBar(这就是RootController按钮在工具栏上的显示方式)。
再次按住Control键并单击文件所有者,然后将其拖到视图中并选择视图。
如果你现在运行它,一切都应该工作!
以下是我在此之后的一些问题:
问:如何更改工具栏上按钮的名称? 答:工具栏(以及因此按钮)是从RootViewController.m文件控制的,查找此方法
- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc {
// Keep references to the popover controller and the popover button, and tell the detail view controller to show the button.
barButtonItem.title = @"Root View Controller";
self.popoverController = pc;
self.rootPopoverButtonItem = barButtonItem;
UIViewController <SubstitutableDetailViewController> *detailViewController = [splitViewController.viewControllers objectAtIndex:1];
[detailViewController showRootPopoverButtonItem:rootPopoverButtonItem];
}
注意barButtonItem.title = @"Root View Controller";
,将@
更改为您想要的任何内容!注意:如果您将此字段留空,则该按钮不会出现!
问:如何更改弹出菜单顶部的名称?
答:添加以下行以声明/更改名称。 self.title = @"Menu";
,在您的RootViewController.m文件中,- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
方法。