在TabBar控制器中打开子视图?

时间:2012-05-11 17:10:05

标签: iphone objective-c

我对客观c和iphone开发完全陌生。我正在尝试创建一个具有三个级别的应用程序:TabBarView,TableView和普通视图。用户从TabBarView开始,选择两个TableView中的一个,并可以选择列出的项目之一来显示其详细信息(在普通视图中)。我在网络文章中找到了以下代码来帮助解决这个问题:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    Lightbulb *entry = [self.dataController objectInListAtIndex:[indexPath row]];

    DetailsController *dvController = [[DetailsController alloc] initWithNibName:@"DetailsView" bundle:[NSBundle mainBundle]];
    [dvController assignModel:entry];
    [self.navigationController pushViewController:dvController animated:YES];
    [dvController release];

}

LightBulb是我制作的模型类,DetailsController和DetailsView与模板化实现一起存在。)

这是在TableViewController中。它叫,但没有实现任何目标。我不知道为什么会这样。

在回复didSelectRowAtIndexPath事件以显示新视图时,我到底需要做些什么?如何以不隐藏/干扰标签视图的方式执行此操作?

1 个答案:

答案 0 :(得分:2)

我假设您的选项卡在两个视图控制器之间进行选择,如果是这种情况,那么“[self.navigationController pushViewController:dvController animated:YES];”将无法正常工作,因为您没有该视图控制器的导航控制器。

您需要具有tabBarViewController的结构,其中每个选项卡都加载UINavigationController而不是ViewController。我建议学习基于导航的应用程序的基础知识,它可以从tableview中完成选择,然后在你理解它时将代码传递给这个项目。这可能是一个很好的Navigation tutorial