我正在使用xCode 4.2和故事板。我有一个链接到UITableViewController的TabBarController,第一个TableViewController中的每个单元都假设在第二个TableViewController中生成另一个表视图。 第二个控制器称为PhotoListController,调用方法如下所示。问题是第二个表视图永远不会出现。我检查了导航控制器,它不是空的。我知道该视图存在,因为如果我将它添加到当前视图,作为子视图,它会出现并重叠当前视图。我还在PhotoListViewController类的viewDidLoad中添加了一个NSLog语句,它正在转向该方法。我已经在这几个小时没有运气了。任何帮助,将不胜感激。我不确定错误是否源自此代码,但这里是:
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
PhotoListViewController *plvc = [[PhotoListViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] init];
[plvc viewWillAppear:YES]; // without this line it never gets to viewDidLoad in PhotoListViewContrller.m
[nav pushViewController:plvc animated:YES];
}
答案 0 :(得分:0)
试试这个。
PhotoListViewController *plvc = [[PhotoListViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:plvc];
[plvc viewWillAppear:YES]; // without this line it never gets to viewDidLoad in PhotoListViewContrller.m
[nav pushViewController:plvc animated:YES];
答案 1 :(得分:0)
您不应该在该方法中创建新的导航控制器。您不会将该导航控制器添加到视图控制器层次结构中,因此它不会显示,也不会显示照片列表视图控制器。
导航控制器应该在你的故事板中。您的故事板应该有一个标签栏控制器作为其初始视图控制器。标签栏中的一个选项卡应附有导航控制器。导航控制器的根视图控制器应该是您的主表视图控制器。然后在tableView:didSelectRowAtIndexPath:
中,您只需创建PhotoListViewController
并通过这样说来推送它:
[self.navigationController pushViewController:pvlc animated:YES];
你永远不应该致电viewWillAppear:
。