-viewDidLoad
вызывается только когда ... хорошо, когда загружено представление. То есть, когда он создается в памяти, это первый раз, когда вы создаете контроллер представления. Любые входные данные, основанные на настройках, должны выполняться вместо этого в -viewWillAppear:
, который вызывается каждый раз перед тем, как вставить его в контроллер навигации.
Хотя в обычной практике я всегда выпускаю новый контроллер представления сразу после помещения его в стек, поскольку он больше не принадлежит мне, он принадлежит контроллеру навигации. В этом случае, когда вы в следующий раз поместите его в стек, он снова загрузит представление, поскольку это новый объект.
- (void) tableView:(TableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *screen = [[MyNewViewController alloc] initWithData:[data objectAtIndex:indexPath.row]];
[self.navigationController pushViewController:screen animated:YES];
[screen release];
}
Основная идея, однако, заключается в том, что настройка представления на основе данных, которые могут изменяться каждый раз, когда вы видите представление, должна выполняться в -viewWillAppear:
. Настроить представление дальше, чем вы можете в Интерфейсном Разработчике, изменить то, что не изменится, независимо от того, на какие данные вы смотрите, должно быть сделано в -viewDidLoad