我已经被这个警告困住了好几个小时了。我一直在寻找答案,尝试了我找到的所有答案,但找不到解决办法。这是我所拥有的代码的破败,Xcode默认生成了这个代码。
这是我的AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
}
我在main.m上有这个(根据this answer)
int main(int argc, char *argv[])
{
@autoreleasepool {
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
return retVal;
}
}
我还正确连接了MainWindow.xib中的所有连接。所以我现在不知所措。我可能遗失的任何东西?提前谢谢!
答案 0 :(得分:19)
如果您有rootViewController
,则在application:didFinishLaunchingWithOptions:
设置窗口MainWindow.xib
很奇怪。通常,项目遵循以下三个模板中的一个:
有些项目有MainWindow.xib
。目标的“主界面”在目标的“摘要”选项卡(或其Info.plist)中设置为“MainWindow”。此xib的文件所有者为UIApplication
。 xib包含AppDelegate
的实例,连接到文件所有者的delegate
插座。 xib还包含UIWindow
,其rootViewController
出口连接到UIViewController
(或子类,例如UINavigationController
),它也位于xib中。当应用程序委托收到application:didFinishLaunchingWithOptions:
消息时,xib被完全加载,因此窗口及其根视图控制器已经设置好。
其他项目没有MainWindow.xib
。目标的“主界面”为空。相反,UIApplicationMain
函数会创建AppDelegate
的实例,将其设置为UIApplication
的委托,并向其发送application:didFinishLaunchingWithOptions:
消息。应用程序委托通过创建UIWindow
,创建视图控制器(或多个)以及设置窗口的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
。我不打算详细描述这一点,因为它似乎与您的问题无关。
你所描述的问题让你觉得你使用的是第一个模板的一半,第二个模板的一半。那不行。你需要决定你正在采取哪种方法,然后全押。
答案 1 :(得分:2)
您可以打开xib文件并右键单击占位符中的“文件所有者”。如果视图未连接到View插槽,则按住“Ctrl”键并拖动鼠标右键进行设计,然后再次运行^^(不要拖动到特定控件,当出现边框视图时拖动到背景设计)。
答案 2 :(得分:1)
我有这条消息,因为我在我的RootViewController @property(弱,非原子)IBOutlet UIView * loadView ; 和viewDidLoad被调用了两次......将其重命名为其他内容......
答案 3 :(得分:0)
我已在项目中解决问题,请按照以下步骤解决问题..
1)打开主视图控制器nib文件,在appDelegate
中引用该文件
eg.ViewCotroller.xib
2)在nib文件上检查视图连接,如果没有连接到文件所有者,则连接它。
3)现在运行项目。