Основной XIB не отображается? - PullRequest
1 голос
/ 09 октября 2011

У меня сейчас проблема с моим основным XIB.

Я использую iOS 5 Beta 7, поэтому с этим проблем не должно быть. Во всяком случае, вот как я делаю это в делегате приложения, чтобы показать основной вид:

.h

UIWindow *window;
Game3ViewController *viewController;

@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) Game3ViewController *viewController;

.m

@synthesize window = _window;
@synthesize viewController = _viewController;

В приложении DidFinish метод запуска:

//self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[Game3ViewController alloc] initWithNibName:@"Game3ViewController" bundle:nil] autorelease];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;

Тогда сделка:

- (void)dealloc {
    [_window release];
    [_viewController release];
    [super dealloc];
}

Проблема в том, что я не уверен, должен ли я сейчас что-то делать в MainWindow.XIB, не так ли? Я думал, что этот код сделает все для меня, но все, что я вижу при загрузке приложения, это белое окно. Должен ли я подключить мой основной вид в MainWindow.xib?

В любом случае, если вы посмотрите на стандартные шаблоны Xcode для приложения Single View в Xcode Beta 7, вы увидите, что даже не MainWindow.xib , поэтому я запутался. Как мне исправить это?

Спасибо!

1 Ответ

3 голосов
/ 09 октября 2011

При создании приложения Single View создается 2 .xib. Одним из них является MainWindow.xib, а другим - ViewController.xib. По умолчанию вам не нужно прикасаться к делегату приложения, поскольку оба пера уже связаны.

Однако, если вы хотите начать с нуля, выбрав Шаблон на основе окна, вам придется создать свой собственный View Controller позже. И затем, чтобы добавить контроллер представления в окно, вам нужно сделать все, что вы сделали с этим в вашем методе applicationDidFinishLaunching:

// Override point for customization after application launch.
self.viewController = [[[Game3ViewController alloc] initWithNibName:@"Game3ViewController" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;

Под этим я подразумеваю, что вам нужно исключить первую строку, в которой вы размещаете свое окно. MainWindow.xib уже делает это за вас.

...