SubView не загрузился при первом запуске моего приложения - PullRequest
0 голосов
/ 04 декабря 2011

Я новичок в разработке для iPhone.Я попытался создать простое приложение с окном и контроллером навигации в качестве дополнительного вида этого окна.Проблема заключается в следующем: вспомогательное представление не загружалось при запуске приложения.У меня просто окна с черным экраном.Чтобы загрузить контроллер представления, я должен выйти из приложения и запустить его во второй раз, затем у меня есть вспомогательное представление с контроллером навигации.Я добавил кнопку прямо в окне, чтобы убедиться, что черный экран не является проблемой, но я увидел кнопку при запуске.

Это код, который я имею в моем AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]autorelease];
    [self.window addSubview:_navigationController.view]; 
    [self.window makeKeyAndVisible];    
    return YES;
}

Есть ли у вас решение этой проблемы?

Спасибо.

1 Ответ

2 голосов
/ 04 декабря 2011

Вы должны убедиться, что у вас настроена иерархия представлений. RootViewController окна будет UINavigationController. UINavigationController управляет иерархией viewControllers, поэтому, когда вы создаете его экземпляр, вам нужно назначить rootViewController. Часто это подкласс UITableView.

Поскольку вы выделяете / запускаете окно, я предполагаю, что у вас нет XIB / NIB с UINavigationController и связанного rootViewController, например UITableViewController. Кроме того, вместо добавления представления вашего контроллера навигации, вам нужно назначить rootViewController в окне. Начиная с iOS4 это предпочтительный способ ведения дел. Смотрите также здесь . Попробуйте этот код:

YourViewController *yourViewController = /* code for alloc/initing your viewController */
_navigationController=[[UINavigationController alloc] initWithRootViewController:yourViewController ]
self.window.rootViewController=_navigationController; /* instead of using [self.window addSubview: _navigationController.view] */
[self.window makeKeyAndVisible];

Если вы используете XIB / NIB, вам необходимо убедиться, что _navigationController подключен к файлу XIB и имеет подкласс viewController, подключенный как rootViewController.

Удачи

...