繁体   English   中英

如何在Apple的SampleDetailViews样本的详细视图中推送视图控制器?

[英]How can I push view controllers in detail view of Apple's sample MultipleDetailViews?

我的目的是实现类似于原生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;

也尝试了UINavigationController上的init方法,但是也没有用。

我是否尝试过在没有实现自定义UISplitViewController情况下无法实现的UISplitViewController 我是否被示例代码误导为SecondDetailViewControllerUINavigationBar

我正在寻找类似问题的解决方案。 在我的情况下,我希望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”

并简单地通过引用“故事板ID”来实例化视图控制器,然后将其推送到索引1(细节侧)的拆分视图控制器,它简单快捷

 TimeDetailViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];

[[self.splitViewController.viewControllers objectAtIndex:1] pushViewController:detail animated:YES];

你可以使用:

showDetailViewController(viewController, sender: nil)

关于Apple的文档就在这里

为了能够这样做,你必须将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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM