self.navigationController pushViewController:animated:给我一个黑屏

时间:2015-11-11 13:28:33

标签: ios objective-c uitableview uinavigationcontroller

我使用的是Objective-C。我在.m文件中有这段代码。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
    detailViewController *detail = [[detailViewController alloc]init];
    [self.navigationController pushViewController:detail animated:YES];
}

我在故事板中创建了详细视图控制器场景。它看起来像[enter image description here

每次我在我的模拟器中运行它并点击其中一个tableview单元格时,它会将屏幕推到一个完整的黑色屏幕,如下所示:

enter image description here

有人能帮助我吗?我非常感谢你!

2 个答案:

答案 0 :(得分:2)

是的,它会显示一个空白屏幕,因为您还没有在detailViewController课程上附加任何视觉解释。

使用此方法

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
DetailViewController *vc = [sb instantiateViewControllerWithIdentifier:@"detailViewController"];
[self.navigationController pushViewController:vc animated:YES];

您必须通过单击视图控制器设置故事板ID,并设置故事板ID,如图所示

enter image description here

注意:对于上面的pic替换Storyboard id" MessagingVC"使用" detailViewController"

答案 1 :(得分:0)

使用情节提要时,您不希望使用alloc+init来创建视图控制器。相反,您需要在Interface Builder中分配Storyboard ID,然后使用:

[self.storyboard instantiateViewControllerWithIdentifier:my_identifier];

更好的选择可能是在表视图控制器上设置推送segue。这将导致实例化和推送自动发生。如果需要,您可以覆盖prepareForSegue:sender:来设置属性。