2015-11-08 2 views
0

Мое приложение состоит из трех экранов, главное меню которого представляет собой корневой вид, который предоставляет возможность выбора второго представления.Загрузка дочернего представления запускает корневой ViewController

Второй вид - это UITableView, и если ячейка в таблице выбрана, третий вид, подробный вид, загружает.

Когда загружается третий просмотр, запускаются функции, содержащиеся в корневой viewController 'viewDidLoad', почему это может быть?

Я пробовал различные перетекает (от Tableview на детальном), но результат тот же, вот моя текущая реализация:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([segue.identifier isEqualToString:@"nameOfSegue"]) { 
      UITableViewCell *cell = sender; 
      NSIndexPath *indexPath = [self.table indexPathForCell:cell]; 
     UINavigationController *navigationController = segue.destinationViewController; 
     EntryViewController *TitleViewController = (EntryViewController *) navigationController.topViewController; 
     TitleViewController.entry = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    } 
} 

Do перетекает по своей сути вызвать корневую ViewController или я смотрю в неправильное место?

+0

Просто интересно: что произойдет, если вы удалите 'UINavigationController * navigationController = segue.destinationViewController; EntryViewController * TitleViewController = (EntryViewController *) navigationController.topViewController; 'и заменить его' EntryViewController * entryVC = (EntryViewController *) segue.destinationViewController; ' – BrianS

+0

Я получаю сообщение об ошибке:« ... непризнанный селектор отправлен в экземпляр ... " – NiallJG

ответ

1

Возможно, что-то не так. Поскольку я имею в виду, viewDidLoad() вызывается только один раз, прежде чем представление будет отображаться на экране. Вы уверены, что вызывается viewDidLoad() первого контроллера?

Возможно, вам поможет скриншот вашего Main.storyboard и полный код контроллеров.

От компании Apple документации:

Этот метод вызывается после того, как контроллер представления загрузил свою иерархию вид в память. Этот метод вызывается независимо от того, была ли загружена иерархия представлений из файла nib или создана программно в методе loadView. Обычно вы переопределяете этот метод для выполнения дополнительной инициализации в представлениях, загружаемых из файлов nib.

+0

Когда я удаляю все функции из viewDidLoad третьего представления, он перестает вызывать функции в корневом viewController, поэтому вы должны быть правы. У меня есть NSLog (@ "root view triggered"); поэтому я уверен, что на самом деле он вызывает root viewController. – NiallJG

0

Вы используете StoryBoard? Вы можете установить третий класс viewController для первого viewController, так что при вызове третьего viewController, вызывающего viewDidLoad.

Смежные вопросы