UITableView没有出现

时间:2011-11-06 04:39:08

标签: objective-c xcode

我正在使用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];

}

2 个答案:

答案 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: