草庐IT

iOS Swift window.rootViewController 与 presentViewController

coder 2023-09-04 原文

在多个 View 之间切换的最佳做法是什么?更改 rootViewController 还是使用模态视图?

设置rootviewController:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var vc : UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as TargetViewController
var window :UIWindow = UIApplication.sharedApplication().keyWindow!
window.rootViewController = vc;
window.makeKeyAndVisible()

改变模态视图:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initViewController: UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as TargetViewController
self.presentViewController(initViewController,animated: false, nil)

当我需要向用户展示一些其他 View 时,我不知道该使用哪个。

p.s. 在我的例子中,我有一个以登录表单作为 rootViewController 开头的应用程序。登录后,我认为最好更改 rootViewController 但我对吗?

最佳答案

我的建议是不要为此烦恼太多,你只需覆盖 rootviewController 其余的事情由你的应用程序处理。

    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let initViewController: UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as TargetViewController
    self.window?.rootViewController? = initViewController

在这段代码中,我们只是重写了 AppDelegate 的 Root View Controller 。

关于iOS Swift window.rootViewController 与 presentViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31164242/

有关iOS Swift window.rootViewController 与 presentViewController的更多相关文章

  1. ios - 更改rootViewController时从正确的动画滑动 - 2

    我正在尝试使用从右滑动的动画来更改rootViewController。我知道如何使用翻转动画:letmainStoryboard:UIStoryboard=UIStoryboard(name:"Main",bundle:nil)letviewController=mainStoryboard.instantiateViewControllerWithIdentifier("LandingViewController")UIView.transitionWithView(UIApplication.sharedApplication().keyWindow!,duration:0.5,

  2. objective-c - 升级到 iOS 6 和 RootViewController 方向不正确 - 2

    我正在将旧版应用程序升级到iOS6,它只支持横向。当我在iPhone模拟器或我的iPhone4上运行该应用程序时,RootViewController的方向是纵向模式,而它应该是横向的。但是,键盘最初处于正确的位置。此外,当我旋转设备时,键盘会保持其初始方向,而RootView永远不会改变方向。在项目设置的SupportedInterfaceOrientations部分,选择了LandscapeLeft和LandscapeRight按钮。在pList文件中,InitialInterfaceOrientation设置了Landscape(righthomebutton),Supporte

  3. objective-c - 将 navigationController 的 rootViewController 设置为委托(delegate) - 2

    我的问题可能是技术问题,而不是对Controller和委托(delegate)的设置方式的误解。也就是说,也许我应该以不同的方式做...无论如何,我有一个带有mainViewController的Storyboard设置。其中有一个UIButton,单击它时,会转到一个弹出窗口。弹出窗口的内容ViewController是UINavigationController,而rootViewController是MyViewController。我试图让mainViewController成为MyViewController的delegate并在prepareForSegue中这样做:-(v

  4. iOS 如何在已经堆叠的 ViewController 上调用 presentViewController - 2

    我正在尝试将ViewController推送到已经推送的ViewController上,如下所示。然而,不知何故,当我尝试推送newPersonViewController时,这个新Controller并没有被推送到堆栈上。我不知道为什么Xcode提示我试图添加一个不属于层次结构的新Controller。我是否错误地呈现了ABPeoplePickerViewController?这就是newPersonViewController无法被压入堆栈的原因吗?来自控制台的消息:Warning:Attempttopresentonwhoseviewisnotinthewindowhierarc

  5. ios - UIWindow 在启动后丢失 rootviewcontroller - 2

    我的应用程序有一个带有正确设置的RootViewController的UIWindow。我知道这一点是因为我在设置rootViewController后(在应用程序委托(delegate)中)检查它,一切都很好。“我的应用”启动后,一切正常。我的问题是,当我checkin“主”View时,RootViewController不再在UIWindow上正确设置。我的应用程序运行良好..那么您可能想知道问题是什么...好吧,我正在尝试实现AdColony(视频广告),他们需要获取UIWindow的rotviewcontroller来显示他们的广告。当他们检查rootviewcontrolle

  6. iphone - presentViewController 和 pushViewController 之间的不同结果 - 2

    我对在以编程方式实例化和打开新View的两次尝试之间看到的不同结果感到有些困惑。我有一个由NSTimer回调调用的方法(虽然我认为这不是那么相关),它尝试分配和初始化第二个ViewController,并将它压入堆栈(我可能有一点我的命名法离开那里,抱歉)。查看ViewController编程指南和此处的一些答案,我确定了两个可能的解决方案,这两个解决方案都可以正常构建和运行,但我得到不同的结果,它们都不能完全工作。第一个使用presentViewController方法。它看起来像这样:SecondViewController*secondView=[[SecondViewContr

  7. ios - 将 UIImageView 添加到 rootViewController - 2

    我只是想做的就是在屏幕上显示图像,因为我刚开始使用iOS发展。我想既然UIImageView是UIView的子类,我会以类似的方式添加它,但我没有任何运气。我知道这是一个简单的问题,但我们将不胜感激。-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{self.window=[[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]];//Overridepointforc

  8. ios - iPhone 中的 presentViewController 时如何保持背景透明? - 2

    我想像iPhoneiOS6中的UIActivityController一样保持背景透明我尝试清除颜色和不透明但背景总是黑色像这样(iPhoneiOS5模拟器)这是presentViewController代码:ShareViewController*controller=[[ShareViewControlleralloc]initWithNibName:@"ShareViewController_iPhone"bundle:nil];controller.delegate=self;[selfpresentViewController:controlleranimated:YESco

  9. ios - presentViewController 不存在 - 2

    我用Storyboard制作了一个单View项目,添加了几个ViewController。初始ViewController有一个简单的按钮来显示另一个ViewController-(IBAction)doPhotoAlbumBtn:(id)sender{UIStoryboard*storyboard=[UIStoryboardstoryboardWithName:@"Main.storyboard"bundle:nil];VCDecorations*ieVC=[storyboardinstantiateViewControllerWithIdentifier:@"VCDecoratio

  10. ios - 带有自定义动画的 PresentViewController - 2

    我需要用UIViewAnimationOptionCurveEaseIn动画呈现ViewController,其中源Controller从1alpha消失到0,目标Controller从0alpha出现到1我想用presentViewController:animated:completion:我试过:在源代码Controller中UIStoryboard*st=[UIStoryboardstoryboardWithName:[[NSBundlemainBundle].infoDictionaryobjectForKey:@"UIMainStoryboardFile"]bundle:[

随机推荐