如何在代码中引用当前视图控制器

时间:2012-10-14 15:27:56

标签: objective-c ios xcode

我是一个新的iOS开发人员,他提出了一个简单的问题:我想以编程方式从一个视图控制器移动到另一个视图控制器,我该如何编写这段代码?

到目前为止,我有:

UINavigationController *navigationController;
    navigationController = [[UINavigationController alloc] init];
    [self.view addSubview:navigationController.view];
    [navigationController pushViewController:viewController animated:NO];

我甚至不确定这是否会起作用,但我的主要问题是第4行的“viewController”。程序不知道那是什么。它是我当前视图控制器的名称,但是如何设置它以便它知道viewController的含义?

顺便说一下,上面是if / else语句的一部分,它发生并连接到NSUserDefaults类,使得我所指的视图控制器仅在先前未接受条款和条件时才加载。那会有用吗?谢谢。

2 个答案:

答案 0 :(得分:0)

首先是简单的答案:当你想要传递“当前”对象时传递self

更重要的考虑因素是:屏幕上的导航控制器是什么?除非您使用(可能)窗口的根视图控制器的导航控制器,否则您的代码可能不会做太多。

这很容易在你的故事板中设置(“嵌入” - >“导航控制器”),然后你不需要在代码中实例化它,你只需使用self.navigationController(通常)。

答案 1 :(得分:0)

通常,您可以在推送之前实例化viewController,这样程序就会知道它是什么。当然,你可以有一个if语句,并根据if语句的计算方式推送这个新的视图控制器。

我不确定你写的代码 - 这是否正确取决于你的应用程序的结构,以及你在做什么。通常,导航控制器成为窗口的根视图控制器,并在创建导航控制器时将其设置为自己的根视图控制器