在iPhone 6 Plus上分割视图控制器旋转(Split view controller rotation on iPhone 6 Plus)

编程入门 行业动态 更新时间:2024-10-14 06:21:59
在iPhone 6 Plus上分割视图控制器旋转(Split view controller rotation on iPhone 6 Plus)

我有两个导航控制器在横向模式下的分离视图控制器。

这会折叠成纵向的单个导航控制器,并且详细视图控制器将从主机中推出。

如果我在纵向按下详细视图控制器时旋转回风景模式,我不明白如何将详细视图控制器放回到它自己的导航控制器中。

I have a split view controller in landscape mode with two navigation controllers.

This collapses to a single navigation controller in portrait and the detail view controller is pushed from the master.

If I rotate back to landscape when the detail view controller is pushed in portrait I don't understand how to put the detail view controller back into it's own navigation controller.

最满意答案

你应该实现UISplitViewControllerDelegate。 最简单的方法可能是拥有自己的MySplitViewController类,并将自己设置为viewDidLoad中的委托:

self.delegate = self;

首先,你可能想让showDetailViewController看起来像这样:

- (BOOL) splitViewController:(UISplitViewController*)splitViewController showDetailViewController:(UIViewController*)vc sender:(id)sender { if (splitViewController.collapsed) { [(UINavigationController*)splitViewController.viewControllers[0]) pushViewController:vc animated:YES]; } else { self.viewControllers = @[ self.viewControllers.firstObject, vc ]; } return YES; }

这应该照顾在两个方向上正确显示细节视图。

接下来,你应该实现下面的委托方法类似于这个:

- (UIViewController*) splitViewController:(UISplitViewController*)splitViewController separateSecondaryViewControllerFromPrimaryViewController:(UIViewController*)primaryViewController { UINavigationController* nc = primaryViewController; UIViewController* detailVC = nc.viewControllers.lastObject; return detailVC; }

这种方法是你从主控制器获取任何你想要的东西的机会,并将它作为详细视图控制器返回。 上面的示例代码非常简单,您可能需要遍历导航视图控制器,并从特定的视图控制器中选择所有视图(假设您已从细节视图推入)。

无论如何,这需要花费一些时间并阅读: UISplitViewController类的引用 ,尤其是UISplitViewControllerDelegate协议参考这将更清晰。 如果你想要一个快捷方式,看看Xcode分割视图控制器模板项目。 那个人还应该包含提示或确切的解决方案,以解决您的问题。

You should implement UISplitViewControllerDelegate. Simplest way may be to have your own MySplitViewController class and set itself as a delegate in viewDidLoad:

self.delegate = self;

First, you may want showDetailViewController to look something like:

- (BOOL) splitViewController:(UISplitViewController*)splitViewController showDetailViewController:(UIViewController*)vc sender:(id)sender { if (splitViewController.collapsed) { [(UINavigationController*)splitViewController.viewControllers[0]) pushViewController:vc animated:YES]; } else { self.viewControllers = @[ self.viewControllers.firstObject, vc ]; } return YES; }

That should take care of proper showing of details view in both orientations.

Next, you should implement following delegate method similar to this:

- (UIViewController*) splitViewController:(UISplitViewController*)splitViewController separateSecondaryViewControllerFromPrimaryViewController:(UIViewController*)primaryViewController { UINavigationController* nc = primaryViewController; UIViewController* detailVC = nc.viewControllers.lastObject; return detailVC; }

This method is your chance to take whatever you want from primary controller and return that as detail view controller. The example code above is rather simple one, you may need to traverse through navigation viewControllers and pick all starting from specific view controller (assuming you had pushes from details view).

Anyways, it would really payoff to take some time and read: UISplitViewController class reference and especially UISplitViewControllerDelegate Protocol Reference This will be much clearer. If you want a shortcut, take a look at Xcode split view controller template project. That one should also contain hint or exact solution for your problem.

更多推荐

本文发布于:2023-08-07 16:12:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1465370.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:视图   控制器   iPhone   Split   rotation

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!