我正在关注此示例:http://doronkatz.com/ipad-programming-tutorial-hello-world。 这个例子效果很好。
现在我想在splitview中使用3个选项卡,并为每个选项卡添加一个新的navigationcontroller。 但我不知道如何实现它。 我转到这段代码:
- (void)setDetailItem:(id)newDetailItem {
if (detailItem != newDetailItem) {
[detailItem release];
detailItem = [newDetailItem retain];
// Update the view.
navigationBar.topItem.title = detailItem;
if ([detailItem isEqualToString:@"Test"]) {
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil];
[self.navigationController pushViewController:testViewController animated:NO];
[mapViewController release];
}
if ([detailItem isEqualToString:@"Test2"]) {
}
}
if (popoverController != nil) {
[popoverController dismissPopoverAnimated:YES];
}
但我知道我实际上不必使用'pushviewcontroller',我只想从这一点开始一个新的navigationcontroller,因此对于splitview中的每个选项卡。我怎么能做到这一点?我知道这是非常基本的,但我无法弄明白。
感谢。
答案 0 :(得分:2)
根据我的理解,你需要一个拆分视图控制器作为主控制器。左侧面板将选择一个项目,该项目的右侧详细视图将包含3个选项卡。每个选项卡都有一个导航控制器。应用商店遵循类似于详细视图的模式。
将控制器构建为树是很重要的。
使用此模式,您可以在viewDidLoad上创建控制器结构,但在响应setDetailItem时更改第1,2,3页的内容 UINavigatorContoller有一个popToRootViewControllerAnimated消息,可以为3个导航控制器中的每一个重置以前的导航控制器堆栈。当我开始学习ios开发时,我发现在代码中设置控制器层次结构比使用界面构建器更容易。一旦获得概念,IB就会更快。您仍然可以为page1,2,3根视图控制器创建IB nib控制器。
答案 1 :(得分:0)
如果我理解正确,你有一个UISplitViewController,你希望有三个UINavigationControllers作为详细视图。在这种情况下,如果在UISplitViewController类中实现,则以下内容将起作用:
if ([detailItem isEqualToString:@"Test"]) {
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestView" bundle:nil];
//since self.viewControllers is immutable, let's make our own temporary copy.
NSMutableArray *tempArray = [self.viewControllers mutableCopy];
//switcheroo with the new view controller
[tempArray replaceObjectAtIndex:1 withObject:testViewController];
// our new view controller is retained by the array, so let's release it
[testViewController release];
//set the new array to be displayed
self.viewControllers = tempArray;
//clean up - out mutableCopy returns a retained object
[tempArray release];
}