2014-10-21 4 views
0

Я попытался нажав на мой ChatView вид контроллера от моего UserProfile зрения контроллера в ряде различных способов:Почему этот вид не загружается правильно?

UserProfile.m

ChatView *chatView = [[ChatView alloc] init]; 
[self.navigationController pushViewController:chatView animated:YES]; 

также:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil]; 
ChatView *chatView = [storyboard instantiateViewControllerWithIdentifier:@"chat_view"]; 
[self.navigationController pushViewController:chatView animated:YES]; 

А также Я пробовал модальные презентации:

[self presentViewController:chatView animated:YES completion:nil]; 

Это на самом деле не врезаться, но все они не пройти этот бит viewDidLoad:

JSQMessagesViewController.m

-(void)viewDidLoad 
{ 
    ... 
    NSLog(@"We see this log"); 

    [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([JSQMessagesViewController class]) 
            owner:self 
           options:nil]; 

    NSLog(@"We do not see this log"); 
    ... 
} 

Дополнительная информация Приведенный выше код все работает совершенно штраф когда я нажимаю на этот вид из моего RecentChats вид контроллер. Ключевое различие, я думаю, в том, что сам мой контроллер UserProfile загружает nibs, тогда как RecentChats - это более простая раскадровка UITableViewController, и мне интересно, является ли загрузка nib в UserProfile, что вызывает проблемы.

+0

Название предполагает, что 'ChatView' является представлением не View Controller. Это правда? – Holly

+0

Это так. 'ChatView: JSQMessagesViewController: UIViewController' - это библиотека, которую я загрузил здесь: https://github.com/relatedcode/NotificationChat –

ответ

0

Короткий ответ: вы делаете много основополагающих вещей неправильно, и они завершаются тем, что ваш код не работает.

Вы должны прочитать основные принципы управления Apple View View.

Чтобы назвать несколько проблем, вы используете неправильную функцию инициализации для контроллера просмотра. Если подкласс не обозначен иначе, -initWithNibNamed:bundle: (ввод из памяти на моем телефоне, извините, если я не точно) - правильный метод.

Основной вид контроллера вашего вида загружен в метод -loadView, а не -viewDidLoad. Если вы используете NIB, имя NIB должно быть передано в метод инициализации, а не через -loadNibNamed:.

Я мог бы продолжить какое-то время, но вы поняли суть.