2011-11-06 56 views
0

我正在使用xCode 4.2和故事板。我有一个TabBarController链接到UITableViewController,第一个TableViewController中的每个单元格都假设在第二个TableViewController中生成另一个表视图。 第二个控制器被称为PhotoListController,调用方法在下面列出。问题是第二个表视图从不出现。我检查了导航控制器,它不是null。我知道该视图存在,因为如果我将它添加到当前视图,作为子视图,它会出现并重叠当前视图。我还在PhotoListViewController类的viewDidLoad中添加了一条NSLog语句,它正在使用该方法。我一直在这个几个小时没有运气。任何帮助,将不胜感激。我不知道,如果误差从该代码源于但在这里它是:UITableView不会出现

-(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

试试这个。

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]; 
+0

我已经改变了第二行 – Tendulkar

0

您不应该在该方法中创建新的导航控制器。您不要将该导航控制器添加到视图控制器层次结构中,因此它当然不会显示,也不会显示照片列表视图控制器。

导航控制器应该位于故事板中。你的故事板应该有一个标签栏控制器作为其初始视图控制器。标签栏中的其中一个选项卡应该附带一个导航控制器。导航控制器的根视图控制器应该是您的主表视图控制器。然后在tableView:didSelectRowAtIndexPath:,你刚才创建PhotoListViewController并说这将其推:

[self.navigationController pushViewController:pvlc animated:YES]; 

你不应该叫viewWillAppear:

+0

罗布,非常感谢,做到了。我回去开始新的故事板,并按照你的说法设置它,它运行良好。再次感谢 – Gil