使用XIB文件,但不会调用viewDidLoad

时间:2014-08-28 22:14:44

标签: ios xcode

我创建了一个空项目,并且我已经包含了xib文件,但是当我运行应用程序时,不会调用viewDidLoad。

    //
    //  ViewController.m
    //  InstantForum
    //
    //  Created by trikam patel on 28/08/2014.
    //  Copyright (c) 2014 trikam patel. All rights reserved.
    //

    #import "ViewController.h"

    @interface ViewController ()

    @end

    @implementation ViewController

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
        // Custom initialization
        }
        return self;
    }

    - (void)viewDidLoad
    {
        [super viewDidLoad];

        CGRect screenRect = [[UIScreen mainScreen] bounds];

        UIView *loginSignupView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenRect.size.width, 68)];
        loginSignupView.backgroundColor = [UIColor colorWithRed:56.0f/255 green:56.0f/255 blue:57.0f/255 alpha:1.0f];
        [self.view addSubview:loginSignupView];

    }

    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }

更新

我在控制台中输出了这个输出:

2014-08-28 23:00:57.709 InstantForum[19545:60b] Application windows are expected to have a root view controller at the end of application launch

2 个答案:

答案 0 :(得分:1)

您的应用程序未正确初始化。 "窗口"是空的,没有附加到任何视图控制器。

在appdelegate中,检查是否为窗口设置了rootViewController。它应该像... ...

ViewController *vc=[[ViewController alloc] @"ViewController" bundle:nil];
self.window.rootViewController=vc
self.window.makeKeyAndVisible=YES;

以上技术上告诉appdelegate将viewcontroller的视图附加到应用程序的窗口。如果ViewController被正确创建(它的视图附加到控制器),它应该显示。

答案 1 :(得分:0)

您的ViewControllerWindow在哪里定义?如果在XIB文件中,请检查它们是否已连接到Connections Inspector中。如果没有连接,请从窗口按Ctrl-Drag(在文档大纲中)拖动到ViewController,并建立与RootViewController的连接。

如果在AppDelegate中定义了ViewController和窗口,则可以使用

获得相同的结果
self.window.rootViewController = viewcontroller;