9

我已经被这个警告困扰了几个小时了。我环顾四周寻找答案,尝试了所有我找到但找不到解决方案的答案。这是我拥有的代码的简写,它是 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 中的所有连接也正确连接。所以我现在很茫然。有什么我可能会丢失的吗?提前致谢!

4

4 回答 4

19

如果你rootViewControllerapplication:didFinishLaunchingWithOptions:一个MainWindow.xib. 通常一个项目遵循以下三个模板之一:

  • 有些项目有一个MainWindow.xib. 目标的“主界面”在目标的“摘要”选项卡(或其 Info.plist)中设置为“主窗口”。此 xib 的文件所有者是UIApplication. xib 包含一个实例AppDelegate,连接到文件所有者的delegate插座。xib 还包含 a UIWindow,其rootViewController出口连接到 a 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. 我不会详细描述这一点,因为它似乎与您的问题无关。

您所描述的问题听起来像是您使用了第一个模板的一半和第二个模板的一半。那是行不通的。您需要决定采用哪种方法,然后全力以赴。

于 2012-07-17T04:21:46.303 回答
2

您可以打开 xib 文件并在占位符中右键单击“文件的所有者”。如果view没有连接到View outlet,则按住“Ctrl”键并拖动鼠标右键单击进行设计,然后再次运行^^(不要拖动到特定控件,当出现边框视图时拖动到背景设计)。

于 2012-11-01T02:28:33.097 回答
1

I have this message because I had in my RootViewController @property(weak, nonatomic) IBOutlet UIView* loadView; and viewDidLoad was called twice... Rename it to something else...

于 2013-07-08T10:00:13.057 回答
0

我在我的项目中解决了问题,请按照以下步骤解决它..

1) 打开主视图控制器 nib 文件,该文件在appDelegate eg.ViewCotroller.xib中有引用

2)在 nib 文件上检查视图连接,如果没有连接到文件所有者,则连接它。

3) 现在运行项目。

于 2013-03-26T06:14:37.973 回答