将实用程序应用程序(2个视图控制器)转换为选项卡栏应用程序

时间:2011-06-18 18:50:44

标签: iphone ios xcode refactoring uitabbarcontroller

正如标题所示,我已经构建了一个基于实用程序的应用程序 该应用程序包含(目前)2个视图控制器+模型类层次结构 问题是,因为我想在应用程序中添加一些功能,我想将其转换为基于TabBar的应用程序。

作为第一步,我希望第一个视图是标签栏的第一个视图,flipSideView是其他标签栏项之一。

此类任务是否有“标准程序”/“购物清单”? 我相信你们中的一些人遇到了同样的问题,并且会喜欢一些关于“切片”应用程序的建议,并在为主窗口创建一个新的nib文件之后“连接它”(这是第一步吗?)

提前致谢。

2 个答案:

答案 0 :(得分:2)

我可能会开始如下(假设您正在使用Interface Builder并使用标准Xcode实用程序应用程序模板):

  • 编辑MainWindow.xib文件并将标签栏控制器对象拖到视图层次结构的顶层。
  • IB中的默认标签栏控制器包括两个视图控制器项目作为示例。单击第一个并将其类更改为现有的Main View Controller类。
  • 您还可以通过添加IB已添加到视图层次结构中的相关标签栏项目来设置主视图控制器项目的图标和标签栏标题。
  • 为第二个标签栏项设置FlipsideViewController的类。
  • 从NIB文件中删除旧版主视图控制器,并从Application Delegate中删除IBOutlet属性(您可能还引用了dealloc中应删除的主视图控制器)。
  • 在App Delegate中为Tab Bar Controller添加一个IBOutlet属性,如下所示(不要忘记综合属性):

    @property(nonatomic,retain)IBOutlet UITabBarController * tabBarController;

  • 在IB中,将tabAarController出口从App委托对象连接到Tab Bar Controller对象。

  • 最后,要显示标签栏控制器以代替主视图控制器,请将应用程序中的代码更改为:didFinishLaunchingWithOptions:以下内容:

    [self.window addSubview:self.tabBarController.view];

这应该启动并运行基本标签栏应用程序,您可以向标签栏添加其他视图控制器。

由于您不再想在MainView和FlipsideView之间切换,您可以从MainViewController中删除对FlipsideViewControllerDelegate的引用以及info按钮及其IBAction方法showInfo。同样在FlipeSideViewController中,您应该从视图及其IBAction方法中删除完成按钮,因为当与标签栏一起使用时,这些按钮不再有意义。

答案 1 :(得分:1)

所以,一步一步:): 1.在你的app委托中声明UITabController插座。 2.在MainWindow.xib中:首先在文档窗口中拖动UITabBarController的实例,然后从app delegate连接到该实例。现在你可以将MainViewController设置为UiTabBarController的第一个tab viewcontroller,然后将FlipsideViewController设置为UiTabBarController的第二个tab viewcontroller。 3.在app delegate的appDidFinishLaunching中替换[self.window addSubview:mainViewController.view];使用[self.window addSubview:theNameOfUITabBarControllerOutlet.view] ;.这将做的工作。对不起,我不知道你的背景,这就是为什么我不是非常具体地执行我描述的特定动作,所以如果你发现自己陷入困境请告诉我