听起来您正试图从 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
属性可用,您就可以使用作为 - 子类的现有类。
- 从 Xcode 的对象库中添加您的导航控制器并按照您需要的方式进行设置。
- 在 Storyboard 中选择 NavigationController,然后打开Utilities Panel,然后选择Identity Inspector Tab。将
Custom Class
名称设置为您UIViewController
或UINavigationController
子类的名称:
- 在您的课程中,您将能够使用该
navigationController
属性,以及与视图控制器相关的数百个其他属性。请记住,AppDelegate 确实是设置您的应用程序和处理应用程序事件(例如应用程序关闭、应用程序后台、应用程序打开)的地方。