我的目的是实现与原生iPad设置应用类似的功能。设置使用UITableViewController
,因此,在详细信息视图中可以深入查看子视图,但我希望能够通过详细视图中的按钮点按视图控制器。
所以我试图扩展MultipleDetailViews示例应用程序:
1)SecondDetailViewController
将属性navigationController
(只读)设置为nil
...
2)所以我创建了一个新的UINavigationController
并用它来推动我的控制器,但那不起作用。
我的代码:
if (!self.myNavigationController) {
self.myNavigationController = [[UINavigationController alloc] initWithRootViewController:self];
}
FirstDetailViewController *controller = [[FirstDetailViewController alloc] initWithNibName:@"FirstDetailView" bundle:nil];
[[self myNavigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;
还在init
上尝试了UINavigationController
方法,但效果不佳。
我是否尝试过在不实施自定义UISplitViewController
的情况下无法做到的事情?我是否被SecondDetailViewController
UINavigationBar
的示例代码误导了?
答案 0 :(得分:0)
为了能够这样做,你必须将viewController推送到数组中的每个viewController。像这样:
[[self.appDelegate.splitViewController.viewControllers objectAtIndex:0] pushViewController:rootLevel1 animated:YES];
[[self.appDelegate.splitViewController.viewControllers objectAtIndex:1] pushViewController:detailLevel1 animated:YES];
信用和代码: http://kshitizghimire.com.np/uisplitviewcontroller-multipledetailviews-with-navigation-controller/
答案 1 :(得分:0)
我正在寻找类似问题的解决方案。在我的情况下,我希望tableview链接到多个详细视图,具体取决于选择。我可以在一个viewcontroller上覆盖数据但是正在寻求更好的解决方案。这就是我做的。它比我迄今为止发现的一些复杂和过时的选项更简单,效果更好。
我只是在身份检查器中将一个故事板ID提供给我想要显示在detailview(“second”)中的viewcontroller,并在didSelectRowAtIndexPath上添加:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];
[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];
}
因此,当有人按下主视图中的单元格时,会推送详细视图。
一个简单的if语句可以切换显示的视图:
if ([[self.selfRootMenuArray objectAtIndex:indexPath.row] isEqual: @"Second Choice"]) {
TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];
[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];
else if ([[self.selfRootMenuArray objectAtIndex:indexPath.row] isEqual: @"First Choice"]) {
TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"first"];
[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];
};
您可以简单地使用按钮,开关或其他任何内容而不是表格视图,但重点是通过在“身份检查器”中添加“故事板ID”
并简单地通过引用“Storyboard ID”来实例化视图控制器,然后将其推送到索引1(详细信息侧)的拆分视图控制器,其简单快速
TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];
[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];
答案 2 :(得分:0)