0

我确信有一种简单的方法可以做到这一点,我显然错过了。

我的 UINavigation 控制器中有三个类:

  1. MasterNavViewController - UINavigationController 类型 - 拥有所有后续视图控制器的属性。
  2. FirstNavViewController - UIViewController 类型。
  3. SecondNavViewController - UIViewController 类型。

由于我不想在这里讨论线程的原因,我想使用代码从 FirstNavViewController 移动到 SecondNavViewController。我试过了:

[self.navigationController pushViewController:SecondNavViewController animated:YES];

但我的代码中出现错误:使用未声明的标识符“SecondNavViewController”是指 MasterNavViewController 吗?

我不完全确定如何进行此操作。我曾尝试导入我的 SecondNavViewController.h,但这似乎也不起作用。

我在想也许我正试图以错误的方式做到这一点。任何指针将不胜感激!詹姆士

根据要求:我没有在代码中明确创建 SecondNavViewController,我不确定如何......但这就是我最有可能出错的地方,对吧?我已经创建了这些类,然后将它们与我拖入 IB 的 UIViewController 链接起来。通常我只会在两者之间创建一个 push segue,但在这种情况下我不想这样做。

4

2 回答 2

0

如果您在界面构建器中创建 UIViewController 并以编程方式初始化和显示它,那么您必须使用创建类的实例-initWithNibName:bundle:并将其传递给-pushViewController:animated:而不是类名。

当您出于线程原因执行此操作时,您必须小心进行 UI 的所有更新,包括在主线程上推送新的视图控制器。这可以很容易地完成,如下所示:

dispatch_async(dispatch_get_main_queue(), ^(void)
{
    // update ui or push view controller etc.
});
于 2012-12-05T00:11:33.163 回答
0

SecondNavViewController不等于secondNavViewController。Objective-C 区分大小写。

所以你需要 SecondNavViewController 实例,如:

SecondNavViewController * secondNavViewController = [[SecondNavViewController alloc] ...];
[self.navigationController pushViewController:secondNavViewController animated:YES];
...
于 2012-12-05T02:02:59.357 回答