应用程序窗口预计在应用程序启动警告结束时有一个根视图控制器

我一直坚持这个警告几个小时了。 我环顾四周寻找答案,尝试所有我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 ,它的rootViewControllersockets连接到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)现在运行该项目。