将导航控制器添加到选项卡栏应用程序

时间:2013-07-25 14:49:47

标签: ios uinavigationcontroller uitabbar

我对这个问题有两个问题。首先,我将导航控制器成功放入故事板并与选项卡链接,并按照我希望的方式工作。除了一件事。当我尝试添加这样的代码时 [self.navigationController popToViewController:vc animated:YES] 我收到错误属性'navigationController'找不到'AppDelegate *'

类型的对象

这是因为我把它放在了错误的地方吗?或者因为它是一个tabbar应用程序而且是正确的。

1 个答案:

答案 0 :(得分:1)

听起来你正在尝试从AppDelegate调用导航控制器。除非您专门设置AppDelegate以使用导航控制器(它需要是UIViewController的子类),否则您将收到错误,因为AppDelegate类上没有导航控制器(默认情况下) )。因此,当您进行该调用时 - 无法找到导航控制器。请注意您的AppDelegate是UIResponder的子类,而不是UIViewController

@interface AppDelegate : UIResponder <UIApplicationDelegate>

相反,创建和/或将导航控制器连接到UIViewController子类 - 然后你可以从你的子类进行这样的调用:

[self.navigationController popToViewController:vc animated:YES];

要创建和设置导航控制器,请按照以下步骤操作(如果您不使用故事板,则可能会有所不同)。

  1. 创建一个新的UINavigationController Obj-C子类。在Xcode菜单栏中,选择File > New,或按 CMD + N 。为您的类命名并将其超类设置为UINavigationControllerAdding a UINavigationController Subclass
    请注意,您并不一定需要一个全新的课程!只要UIViewController属性可用,您就可以使用作为navigationController子类的现有类。
  2. 从Xcode中的对象库添加导航控制器,并按照您需要的方式进行设置。
  3. 在Storyboard中选择NavigationController,然后打开实用工具面板,并选择 Identity Inspector选项卡。将Custom Class名称设置为UIViewControllerUINavigationController子类的名称: Navigation Controller Custom Class Xcode 4.6
  4. 在您的班级中,您将能够使用navigationController属性,以及与View Controller相关的数百个其他属性。请记住,AppDelegate确实是一个设置应用程序和处理应用程序事件的地方(例如应用程序关闭,应用程序背景,应用程序打开)。