我创建了一个TabBar应用程序。我在视图中添加了一个UITableView并在里面加载了一些数据。
现在,我不会显示行点击的详细信息。所以我读了一些文章,发现我需要一个navigationController等等,但是在哪里插入呢?我应该删除我的UITableView吗?
答案 0 :(得分:2)
不,你不应该删除你的UITableView,你想要的是可以使用你的UITableView的UITableViewController。
当用户在UITableViewController上点击一行时,如果要显示另一个ViewController,则需要UINavigationController。
本教程解释了如何做我刚才描述的内容,希望它有所帮助:
答案 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];
}