0

关于这个,我有两个问题。首先,我将导航控制器成功放入情节提要中,并与选项卡链接,并且正在按照我想要的方式工作。除了一件事。当我尝试添加这样的代码时,
[self.navigationController popToViewController:vc animated:YES] 我收到一个错误 Property 'navigationController' not found on object of 'AppDelegate *'

是不是因为我放错地方了?或者因为它是一个标签栏应用程序和一些不正确的东西。

4

1 回答 1

1

听起来您正试图从 AppDelegate 调用导航控制器。除非您已专门设置 AppDelegate 以与导航控制器一起使用(它必须是 的子类UIViewController),否则您将收到错误消息,因为您的 AppDelegate 类上没有导航控制器(默认情况下)。因此,当您拨打电话时 - 找不到导航控制器。请注意您的 AppDelegate 如何是 的子类UIResponder,而不是UIViewController

@interface AppDelegate : UIResponder <UIApplicationDelegate>

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

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

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

  1. 创建一个新的UINavigationControllerObj-C 子类。在 Xcode 菜单栏中,选择File > New,或按CMD+ N。命名您的类并将其超类设置为UINavigationController添加 UINavigationController 子类
    请注意,您并不绝对需要一个全新的类!UIViewController只要navigationController属性可用,您就可以使用作为 - 子类的现有类。
  2. 从 Xcode 的对象库中添加您的导航控制器并按照您需要的方式进行设置。
  3. 在 Storyboard 中选择 NavigationController,然后打开Utilities Panel,然后选择Identity Inspector Tab。将Custom Class名称设置为您UIViewControllerUINavigationController子类的名称: 导航控制器自定义类 Xcode 4.6
  4. 在您的课程中,您将能够使用该navigationController属性,以及与视图控制器相关的数百个其他属性。请记住,AppDelegate 确实是设置您的应用程序和处理应用程序事件(例如应用程序关闭、应用程序后台、应用程序打开)的地方。
于 2013-07-25T15:13:39.213 回答