应用程序窗口预计在应用程序启动警告结束时有一个根视图控制器
我一直坚持这个警告几个小时了。 我环顾四周寻找答案,尝试所有我find的,找不到解决scheme。 这里是我所拥有的代码的破解,Xcode默认生成的。
这是在我的AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window.rootViewController = self.navigationController; [self.window makeKeyAndVisible]; return YES; }
我在main.m上有这个(根据这个答案 )
int main(int argc, char *argv[]) { @autoreleasepool { int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); return retVal; } }
我也有我的MainWindow.xib连接正确的所有连接。 所以我现在亏本了 任何我可能错过的东西? 提前致谢!
在application:didFinishLaunchingWithOptions:
设置窗口的rootViewController
是很奇怪的application:didFinishLaunchingWithOptions:
如果你有一个MainWindow.xib
。 通常一个项目遵循三个模板之一:
-
一些项目有一个
MainWindow.xib
。 目标的“主界面”在目标的“摘要”选项卡(或其Info.plist中)中设置为“MainWindow”。 这个xib的文件所有者是UIApplication
。 xib包含一个AppDelegate
实例,连接到文件所有者的代理sockets。 xib还包含一个UIWindow
,它的rootViewController
sockets连接到UIViewController
(或者UINavigationController
子类),它也位于xib中。 当应用程序委托收到application:didFinishLaunchingWithOptions:
消息时,xib被完全加载,所以窗口及其根视图控制器已经被设置。 -
其他项目没有
MainWindow.xib
。 目标的“主界面”是空的。 相反,UIApplicationMain
函数创build一个AppDelegate
实例,将其设置为UIApplication
的委托,并将其发送给application:didFinishLaunchingWithOptions:
message。 应用程序委托通过创buildUIWindow
,创build视图控制器(或几个)以及设置窗口的rootViewController
属性来处理该消息。 默认版本如下所示:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; }
-
一些项目有一个
MainStoryboard.storyboard
。 我不打算详细描述这一点,因为它与您的问题似乎不相关。
你所描述的问题听起来像是你使用了第一个模板的一半,第二个模板的一半。 这是行不通的。 你需要决定你正在采取的方法,并全力以赴。
您可以打开xib文件并右键单击占位符中的“文件所有者”。 如果视图没有连接到视图出口,然后按住“Ctrl”键并拖动鼠标右键devise,然后再次运行^^(不要拖动到特定的控件,当出现边框视图拖动到背景devise)。
我有这个消息,因为我在我的RootViewController @property(弱,非primefaces)IBOutlet UIView * loadView ; 和viewDidLoad被调用两次…重命名为别的…
我在我的项目中解决了问题,按照下面的步骤解决它..
1)打开主视图控制器nib文件,在appDelegate中引用该文件eg.ViewCotroller.xib
2)在笔尖文件检查视图连接,如果没有连接到文件的拥有者然后连接它。
3)现在运行该项目。