ios 6 prepareForSegue приводит к черному экрану

У меня проблемы с использованием раскадровки.

Я правильно подключил кнопку (внутри пользовательского uiviewcell) к сцене (ProfileVC) через push-переход (чей идентификатор pic2profile). Кроме того, в контроллере табличного представления (HomeVC), который управляет ячейками, я реализовал метод prepareForSegue:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if([segue.identifier isEqualToString:@"pic2profile"]){
        ProfileVC *profile = (ProfileVC *)segue.destinationViewController;
        NSLog(@"%@", [segue identifier]);
        Tweet *tweet = [tweets objectAtIndex:0];
        profile.user = tweet.user;  
    }
}

Как объясняется в документации, после вызова segue.destinationViewController в конце prepareForSegue должен отображаться контроллер представления в конце перехода (в данном случае ProfileVC). Что происходит, так это то, что я получаю (без ошибок!) Черный экран, и метод viewDidLoad в ProfileVC не вызывается, хотя объект «профиль» не равен нулю.

Внутри раскадровки сцена ProfileVC связана со своим контроллером представления (ProfileVC), а также настроен идентификатор раскадровки.

Я уже пробовал это, но это не сработало.


person lontra    schedule 20.11.2012    source источник
comment
Ваш текущий контроллер представления управляется контроллером навигации? (Попробуйте зарегистрировать self.navigationController в prepareForSegue:, чтобы быть уверенным.)   -  person Phillip Mills    schedule 20.11.2012
comment
Да, это. HomeVC в раскадровке встроен в навигационный контроллер. Действительно, когда я нажимаю кнопку, подключенную к ProfileVC, я получаю черный экран с панелью навигации вверху (я могу вернуться в HomeVC).   -  person lontra    schedule 20.11.2012
comment
Что вы имеете в виду, что сцена связана с viewController?   -  person AMayes    schedule 03.04.2013


Ответы (1)


Вы выполняете переход к контроллеру представления, используя код, который у вас есть, но между ними есть контроллер навигации? Если это так, вам нужно использовать другой способ, указав навигационный контроллер между ними.

Если вам не нужен навигационный контроллер, вы можете удалить его и подключить ячейку к контроллеру представления и сохранить код, который у вас есть. В противном случае вы должны изменить его.

person Kishon Daniels    schedule 22.01.2015