我对这个问题有两个问题。首先,我将导航控制器成功放入故事板并与选项卡链接,并按照我希望的方式工作。除了一件事。当我尝试添加这样的代码时
[self.navigationController popToViewController:vc animated:YES]
我收到错误属性'navigationController'找不到'AppDelegate *'
这是因为我把它放在了错误的地方吗?或者因为它是一个tabbar应用程序而且是正确的。
答案 0 :(得分:1)
听起来你正在尝试从AppDelegate调用导航控制器。除非您专门设置AppDelegate以使用导航控制器(它需要是UIViewController
的子类),否则您将收到错误,因为AppDelegate类上没有导航控制器(默认情况下) )。因此,当您进行该调用时 - 无法找到导航控制器。请注意您的AppDelegate是UIResponder
的子类,而不是UIViewController
:
@interface AppDelegate : UIResponder <UIApplicationDelegate>
相反,创建和/或将导航控制器连接到UIViewController
子类 - 然后你可以从你的子类进行这样的调用:
[self.navigationController popToViewController:vc animated:YES];
要创建和设置导航控制器,请按照以下步骤操作(如果您不使用故事板,则可能会有所不同)。
UINavigationController
Obj-C子类。在Xcode菜单栏中,选择File > New
,或按 CMD + N 。为您的类命名并将其超类设置为UINavigationController
:
UIViewController
属性可用,您就可以使用作为navigationController
子类的现有类。Custom Class
名称设置为UIViewController
或UINavigationController
子类的名称:
navigationController
属性,以及与View Controller相关的数百个其他属性。请记住,AppDelegate确实是一个设置应用程序和处理应用程序事件的地方(例如应用程序关闭,应用程序背景,应用程序打开)。