我有一个基于ViewBased的应用程序。我在其中一个UIViewControllers上添加了一个UITableView。它显示了数据并且我实现了所有委托方法等。我的问题是当我想要显示detailView时它不会发生。我的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailViewController *detailViewController =[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
NSLog(@"DidSelectRowAtIndexPath");
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
我看到我需要一个navigationController,但我没有一个,而且我没有尝试以编程方式添加一个。我的appDelegate中也没有一个,所以我的问题是我需要添加一个来显示详细信息视图吗?如果是,请给我一个代码示例如何做到这一点。 如果没有,还有其他什么方式?
我是iOS的新手,所以我在这里有点迷失。 请帮忙!
答案 0 :(得分:1)
要以编程方式为此详细视图添加导航控制器,您需要这样的内容:
UINavigationController * controller = [[UINavigationController alloc] initWithRootViewController:detailViewController];
[[detailViewController] release];
[self presentModalViewController: controller animated: YES];
如果你想使用pushViewController,你需要在你正在开始的视图周围有一个导航控制器。
答案 1 :(得分:0)
您需要先添加导航控制器,然后您的主表成为导航控制器的根视图控制器,然后当您点击表中的一行时,将另一个视图控制器推送到导航堆栈。
您的主表如何首先进入应用程序?如果您正在使用笔尖,只需更换导航控制器的视图控制器,并将旧视图控制器添加为导航控制器的子窗口,这是非常容易的。
答案 2 :(得分:0)
您可以通过在app app委员的application:didFinishLaunchingWithOptions:
方法中进行编程来创建一个,如下所示:
UITableViewController *tableViewController = [[[WhateverYourSubclassVCIsCalled alloc] init] autorelease];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableViewController];
window.rootViewController = navController;
[window makeKeyAndVisible];