我已尝试以多种不同的方式从我的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
视图控制器本身会加载nib,而RecentChats
是一个更简单的Storyboard构建的UITableViewController
,我想知道是否在UserProfile
加载了nib {1}}这会导致问题。
答案 0 :(得分:0)
简短的回答是你做了很多根本性的错误,他们最终导致你的代码无效。
您应该阅读Apple的View Controller Fundamentals。
要说明一些问题,您使用了错误的初始化函数来查看控制器。除非子类另有指定,否则-initWithNibNamed:bundle:
(从我手机上的内存输入;对不起,如果我不准确)是正确的方法。
您的视图控制器的主视图加载在-loadView
方法中,而不是-viewDidLoad
。如果您使用的是NIB,则应将NIB的名称传递给initialize方法,而不是通过-loadNibNamed:
加载。
我可以坚持一段时间,但你明白了。