0

我对objective 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在响应事件以显示新视图时,我究竟需要做什么?如何以不隐藏/干扰选项卡视图的方式执行此操作?

4

1 回答 1

2

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

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

于 2012-05-11T17:18:41.500 回答