已加载的Xib文件但没有出现

时间:2014-09-26 18:55:07

标签: objective-c xcode xib

我刚开始学习Objective-C,并且遇到了在加载视图(直接)到使用XIB作为rootViewController之间转换的问题。目前我正在尝试将我的xib文件加载到视图控制器对象中。虽然它编译没有任何问题,我的模拟器出现空白(基本接口,时间和电池电量计除外)。我还确保将我的XIB设置为类BNRReminderViewController并设置视图和相应的按钮/对象。 (我还将我的班级BNRReminderViewController.h导入我的.m文件)

以下是我的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];

    NSBundle *appBundle = [NSBundle mainBundle];

    BNRReminderViewController *rvc = [[BNRReminderViewController alloc] initWithNibName:@"BNRReminderViewController" bundle:appBundle];

    self.window.rootViewController = rvc;

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

    return YES;
}

我认为发生的事情是我的BNRReminderViewController.xib文件不在mainBundle中,因此当我使用NSBundle对象初始化时,没有任何加载,这就是我得到空白屏幕的原因。我是Objective-C的新手,所以我真的不知道如何处理这个,因为许多其他语言只导入.h或直接读取文件。请帮忙。

2 个答案:

答案 0 :(得分:0)

您可以使用rjstellings代码here检查您的NSBundle假设是否正确。

但是,如果您至少使用Xcode 5.0.1,那么您应该能够在不指定包名称的情况下逃脱。此外,由于您的ViewController类出现与xib具有相同的名称,因此Xcode非常智能,可以让您无需指定。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    BNRReminderViewController *rvc = [[BNRReminderViewController alloc] init];
    [self.window setRootViewController:rvc];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

答案 1 :(得分:0)

您不必致电mainBundle。它可能是零。这段代码可能是解决方案:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

        self.dashboardVC = [[DashboardViewController alloc] initWithNibName:@"DashboardViewController" bundle:nil];

        UINavigationController * nc = [[UINavigationController alloc] initWithRootViewController:self.dashboardVC];

        self.window.rootViewController = nc;

        [self.window makeKeyAndVisible];
        return YES; 
}

否则,您是否使用Storyboard创建了应用程序?如果您从Storyboard开始,则必须删除以下行: enter image description here