如何在 iOS 上的视图之间切换
Posted
技术标签:
【中文标题】如何在 iOS 上的视图之间切换【英文标题】:How to switch between Views on iOS 【发布时间】:2012-01-12 07:03:37 【问题描述】:我对 ios 世界很陌生,由于我来自基于 Activity 的 android 世界,我对 iOS 如何管理视图之间的转换有点困惑。
我已经创建了一个全屏显示登录表单的 UIViewController(这是一个针对 iPad 的应用程序)。成功登录后,我想切换到另一个视图并使用 UISplitViewController。为了能够从我的初始控制器推送到第二个控制器(这也是一个 UIViewController),我已经添加了一个 UINavigationController,我的第一个控制器是根。
我已将 UISplitViewController 添加到我的第二个 UIViewController 的 xib 中。 Xcode 之前抱怨我的第二个 UIViewController 没有设置视图出口,所以我基本上盲目地将其设置为我的 UISplitViewController 中的 detailView。
结果是第一个 UIViewController 确实被推开,但我没有让 UISplitViewController 显示,但我在视图出口中设置了 DetailView。
我错过了什么吗?首先显示全屏(没有什么花哨,没有多余的装饰)UISplitViewController 然后推送到 UISplitViewController 需要什么?我之前的尝试涉及新的故事板功能,但结果更加令人困惑(即涉及太多魔法)。也许我只是弄错了一些 iOS 的 UI 范例。
【问题讨论】:
【参考方案1】:您可能希望从 UINavigationController 作为您的根视图控制器开始。 UINavigationController 的 init 方法将另一个视图控制器作为参数(混淆地也称为根 ViewController),它可以是您当前用作应用程序的根视图控制器的视图控制器。然后它将显示在导航控制器中。
将视图控制器放入导航控制器后,您可以调用 [self.navigationController pushViewController:x] 来显示新的视图控制器,然后调用 [self.navigationController popViewController] 再次返回。如果不希望顶部的导航栏,可以将其设置为隐藏。
或者,您可以通过调用 [self presentModalViewController:x] 来显示另一个视图控制器中的全屏视图控制器。
【讨论】:
【参考方案2】:一般来说,您希望将 UIViewController 的视图出口设置为您的 xib 中的***视图。当您创建 xib 时,它可能会给您一个空白视图作为起点,然后您将 UISplitView 添加到其中。那个(以前的)空白视图是您想要的视图出口。
【讨论】:
【参考方案3】:在给定的代码中。我正在点击按钮切换到下一个视图..
NextController(您想要显示的视图就像我们在 Android 中显示的新 Activity 一样)
首先要导入
#import "NextController.h"
然后
- (IBAction)clicking:(id)sender
NextController *nextviewcontroller = [[NextController alloc]initWithNibName:@"NextController" bundle:nil];// include it before calling it..
[self presentViewController:nextviewcontroller animated:YES completion:nil];
其中initWithNibName:@NameOfNibFileToShow
和presentViewController
是内置函数,animated:YES
用于显示动画
【讨论】:
以上是关于如何在 iOS 上的视图之间切换的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Storyboard 在 iOS 中的 UIViewController 之间切换