在没有情节提要的情况下更改视图控制器

Posted

技术标签:

【中文标题】在没有情节提要的情况下更改视图控制器【英文标题】:Changing view controllers without the storyboard 【发布时间】:2014-07-15 23:44:08 【问题描述】:

我正在尝试更改视图,但出于无关紧要的原因,我想通过代码而不是通过情节提要来完成,我找到了以下代码:

[[self ] presentModalViewController:[self destinationViewController] animated:NO];

问题是我不知道为presentModalViewController 或destinationViewController 输入什么。有什么方法可以弄清楚我的观点叫什么,以便我可以把它们放进去?

【问题讨论】:

【参考方案1】:

你应该在顶部有

#import "NameOfViewController.h"

后来

UIViewController *destinationViewController = [[NameOfViewController alloc] init];
[self presentViewController:destinationViewController animated:NO completion:nil];

使用presentViewController 而不是presentModalViewController,因为不推荐使用后一种方法。我希望这对你有用。

【讨论】:

明确 +1 用于调用已弃用的方法【参考方案2】:

在您给出的示例中,[self destinationViewController] 创建并返回一个 UIVIewController。

您可以:

    从 NIB 文件中加载一个

    controller = [[MyController alloc] initWithNibName:@"nib-resource-name" bundle:nil];

    从情节提要中加载一个

    MyController * controller = [self.storyboard instantiateViewControllerWithIdentifier:@"controller-storyboard-id"];

    以编程方式创建一个

    How do I create a UIViewController programmatically?

【讨论】:

以上是关于在没有情节提要的情况下更改视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

情节提要:更改情节提要中指定的 UINavigation 控制器的根视图

如何在不使用情节提要的情况下获取视图控制器的 NibName

使用 Swift 在没有情节提要的情况下展开 segue

为啥我不能从情节提要创建 IBAction

使用情节提要作为子视图?

如何在情节提要 XCode6 (Swift) 中将所有视图控制器设置为风景