带有DetailViews的TabBarController + TableView

时间:2011-07-05 16:09:09

标签: iphone objective-c xcode uitableview

我创建了一个TabBar应用程序。我在视图中添加了一个UITableView并在里面加载了一些数据。

现在,我不会显示行点击的详细信息。所以我读了一些文章,发现我需要一个navigationController等等,但是在哪里插入呢?我应该删除我的UITableView吗?

3 个答案:

答案 0 :(得分:2)

不,你不应该删除你的UITableView,你想要的是可以使用你的UITableView的UITableViewController。

当用户在UITableViewController上点击一行时,如果要显示另一个ViewController,则需要UINavigationController。

本教程解释了如何做我刚才描述的内容,希望它有所帮助:

Table View and NavigationController

答案 1 :(得分:2)

只需将Interface Builder中的UINavigationController拖到TabBarController,然后展开导航控制器,将Root View Controller指向TableViewController。

本教程应该有所帮助:http://blog.willwinder.com/2011/05/xcode4-uitabbarcontroller-with.html

答案 2 :(得分:1)

只需添加UINavigationController并将视图推送到屏幕上

编辑:   这是以编程方式添加NavigationController的方法(例如在你的AppDeleagte中)

  UIViewController  *viewController1, *viewController2;

    viewController1 = [[[UIViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
    UINavigationController *navigationcontroller = [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease];

    viewController2 = [[[UIViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];

    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller, viewController2, nil];

如果您在Viewcontroller1中有一个tableview,则可以使用self.navigationController访问Navigationcontroller,例如在didSelectRowAtIndexPath中打开DetailView

例如。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
    [self.navigationController pushViewController:detailViewController animated:YES];
    [detailViewController release];
}