Контроллеры с несколькими представлениями со своими собственными XIB и когда они загружаются - PullRequest
0 голосов
/ 02 марта 2010

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

У меня есть один пример, в котором есть: multiViewController и два других: aboutViewController, rulesViewController.

В файлах aboutViewController.m и rulesViewController.m я разместил следующий код:

- (void)viewDidLoad {
NSLog(@"rules View did load"); // (Or About View did load, depending on the .m file)
[super viewDidLoad];
 }

Файл mainViewController.m содержит:

-(IBAction) loadRules:(id) sender {
[self clearView];
[self.view insertSubview:rulesViewController.view atIndex:0];
}

-(IBAction) loadAbout:(id) sender {
[self clearView];
[self.view insertSubview:aboutViewController.view atIndex:0];

}

У меня вопрос: почему при запуске приложения срабатывает ViewDidLoad для About и Rules? То есть я получаю сообщения NSLog. Означает ли это, что независимо от отдельных файлов XIB все виды загружаются при запуске?

Мой смысл всего этого: я хочу, чтобы multiViewController был моим главным меню, которое будет иметь отдельные кнопки для отображения других файлов xib при нажатии. Я помещал свой «инициализированный» код в viewDidLoad, но теперь это кажется неправильным, поскольку я не хочу нажимать, пока пользователи не нажмут кнопку, чтобы отобразить это представление.

Примером может служить представление: playGameViewController. В viewDidLoad я проверял, выполнялась ли предыдущая игра, и если да, предлагал пользователю возобновить игру. В приведенном выше случае, когда приложение запускается, оно сразу же запрашивает (потому что viewDidLoad запускается), хотя я сначала хотел отобразить только главное меню.

Любое объяснение очень ценится. Заранее спасибо.

Гео ...

1 Ответ

0 голосов
/ 02 марта 2010

Мой вопрос: почему я бегу? приложение делает ViewDidLoad для обоих О и Правила огня? То есть я получаю сообщения NSLog. Означает ли это, что независимо от отдельные файлы XIB, все представления загружается при запуске?

Когда вы звоните

[self.view insertSubview:rulesViewController.view atIndex:0];

сначала будет вызван viewDidLoad для начального просмотра, а затем viewDidLoad еще раз для RulesViewController.

Когда загружается ваш MainViewController или любое другое представление, viewDidLoad вызывается автоматически. ViewDidLoad существует для того, чтобы вы могли переопределить или изменить любые объекты в перо, или вы можете создавать объекты самостоятельно. Представления загружаются только по мере необходимости. Если бы вы загрузили все ваши представления изначально при загрузке приложения, пользователь просто увидел бы черный экран, пока все представления не были обработаны.

Вы говорите, что проходите некоторые уроки, я еще не знаю вашу область знаний, но изучали ли вы приложения на основе навигации, используя UINavigationController?

Просто пример в качестве вашего запроса, если вы хотите, чтобы кнопка загружала представление, вы можете сделать что-то вроде.

- (IBAction)pushSecondView:(id)sender {
SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    if (secondView != nil) {
        secondView.title = @"Second View";
        [self.navigationController pushViewController: secondView animated: YES];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...