我的RootViewController是一个UITableViewController。以编程方式添加了UINavigationController:
_navigationController = [[[UINavigationController alloc] initWithRootViewController:_rootViewController] autorelease];
[self.window addSubview:_navigationController.view];
[self.window makeKeyAndVisible];
在RootViewController.m中,选择行时应加载DetailViewController:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Switch to detail");
CCouchDBDocument *selectedObject = [self.contentsList objectAtIndex:indexPath.row];
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
[self.view addSubview:detailViewController.view];
[detailViewController setDetailItem: selectedObject];
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
没有addSubView,屏幕上没有任何反应。我以前见过的所有例子都只使用pushViewController。并且,加载DetailView大约需要4秒。这太长了(它目前是空的,只有一个标签)。当我尝试设置navigationTitle(self.title = @“Hello”;)时,标题在RootViewController中保持不变,因此navigationController必定存在错误。
我尝试将所有内容放入AppDelegate并使用switchView方法。问题是调用setDetailItem,如果我使用switch方法,我就无法调用它。
将DetailView从RootViewController加载到导航堆栈中的正确方法是什么?稍后可能会从DetailViewController加载更多?
更新 我从一开始就使用基于Window的应用程序重新开始。添加了一个UITableViewController作为“RootViewController”,并使用AppDelegate中的UINavigationController对其进行了初始化(在XIB中完全没有任何内容)。当我尝试设置self.navigationController.title = @“Test”;在ViewDidLoad中,没有任何反应。
那里有什么问题?
答案 0 :(得分:1)
使用self.title使用UINavigationController显示时,不设置DetailView的标题,需要在DetailView初始化程序中设置UINavigationItem标题属性。
e.g。在DetailView初始化程序中: -
self.navigationItem.title = @"Hello";
你说得对,你不需要将detailViewController视图添加为当前视图的子视图 - 你应该只需要pushViewController调用。我不确定为什么它不会出现。
明显的问题是nib中的所有内容都连接好了,DetailView初始化程序做了什么?