0

解决方案

确保在 plist 中将故事板名称列为主故事板文件名。


我有一个Storyboard连接UINavigationViewController到一个NavigationViewController类的 a ,它被设置为UIWindow rootViewController. 当应用程序运行时(在模拟器 (5.1) 中),我得到一个空白的黑屏,顶部带有蓝色导航栏。

第一个问题是在情节提要中,我将导航栏设置为黑色。我还将状态栏设置为半透明黑色。应用程序运行时,这两种样式都不会受到尊重。

第二个问题是导航控制器的视图是空的,即使在故事板中它与UITableViewController.

我该如何解决这两个问题。我刚开始再次使用 Xcode,之前一直在使用 4.0,所以故事板让我失望了……

更新

这是所要求的代码。显然我不能发布故事板(可以吗?)。

应用委托:

#import "AppDelegate.h"

@implementation AppDelegate

@synthesize window = _window;
@synthesize navigationController;

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

navigationController = [[NavigationViewController alloc] init];

    self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];

    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application {
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
}

- (void)applicationWillTerminate:(UIApplication *)application {
}

@end

导航视图控制器:

#import "NavigationViewController.h"

@interface NavigationViewController ()
@end

@implementation NavigationViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {
    }

    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)viewDidUnload {
    [super viewDidUnload];
}

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end
4

1 回答 1

7

问题是您将一个完全空白的根控制器设置为根控制器,而不是故事板上的那个。您要做的是删除那部分代码,然后在情节提要上单击“是初始视图控制器”的内容

使用故事板时,您通常不必修改 appdelegate,因为 xcode 设置了将出现的初始视图,所有这些仅基于您设置故事板的方式。您可以在 plist 中检查这一点,其中说明将使用哪个故事板作为主要故事板。

如果您想像那样加载导航控制器,那么您可以执行类似的操作,您必须从情节提要本身获取视图控制器并呈现它。

instanceViewControllerWithIdentifier

但是在使用情节提要时没有必要这样做,因为它会自动加载设置为初始的那个(可以看作是箭头指向它的视图控制器)

您的应用委托方法应如下所示

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    return YES;
}
于 2012-06-23T02:56:55.197 回答