如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 WKWebVIew 或 JSC 在 iOS 应用程序中加载 WebAssembly
在 Apples MultipleDetailViews 示例中加载已经初始化的 DetailViewControllers