如何在 iOS 应用中加载初始 UIViewController?

Posted

技术标签:

【中文标题】如何在 iOS 应用中加载初始 UIViewController?【英文标题】:How do I load the initial UIViewController in an iOS app? 【发布时间】:2014-01-21 00:56:26 【问题描述】:

我是 ios 开发新手,我知道我遗漏了一些简单的东西,但我不确定它是什么...我有一个简单的“Hello World”应用程序,我正在尝试获取我的要加载的初始视图控制器。

采取的步骤:

    我创建了一个空项目 我添加了一个扩展 UIViewController 的自定义视图控制器类:

#import "WebViewController.h"

@interface WebViewController ()
@end

@implementation WebViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    return self;


- (void)viewDidLoad

    [super viewDidLoad];


- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];

@end
    我使用 Apple 的向导添加了故事板。 我向该故事板添加了一个视图控制器。 我将自定义控制器设置为该视图控制器的“自定义类”。 我选中了“是初始视图控制器”复选框。

但是当我运行应用程序时,我的控制器没有加载(永远不会调用 viewDidLoad)。我错过了什么?

抱歉这个菜鸟问题...

【问题讨论】:

【参考方案1】:

放大图片。在显示“主界面”的地方,从该菜单中选择要启动的情节提要。在您的故事板出现在列表中之前,您可以稍微摇动 Xcode。如果它现在出现了,请尝试保存故事板文件以及清理/构建您的项目。图片借自raywenderlich.com。


在您的应用委托.m 文件中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 方法中:

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:
    @"MainStoryboard" bundle:nil];
UIViewController *initViewController = [storyBoard 
    instantiateInitialViewController];
[self.window setRootViewController:initViewController];

【讨论】:

澄清一下,didFinishLaunchingWithOptions: 中的代码是“主界面”设置的替代,对吗? (不是除了该设置) 这是正确的特洛伊。如果您使用单视图应用程序等选项启动一个新项目,“主界面”设置将默认设置为自动生成的故事板,您无需触摸您的应用程序委托。【参考方案2】:

在情节提要中,您不需要- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; 作为您的情节提要,WebViewController 是初始视图控制器,因此您在 appDelegate 中不需要任何东西。 WebViewController 会自动调用

【讨论】:

很高兴知道。谢谢!

以上是关于如何在 iOS 应用中加载初始 UIViewController?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flux 中加载初始数据,但前提是组件需要它

如何在 Swift 中加载初始视图控制器?

如何通过 WKWebVIew 或 JSC 在 iOS 应用程序中加载 WebAssembly

在 Apples MultipleDetailViews 示例中加载已经初始化的 DetailViewControllers

在组件中加载初始数据时,如何在 react-transition-group 中暂停动画?

如何在 JSF 应用程序中加载属性文件? [复制]