强制移动到新的视图控制器(没有 segue)

Posted

技术标签:

【中文标题】强制移动到新的视图控制器(没有 segue)【英文标题】:Force Move to a new view controller (without segue) 【发布时间】:2017-05-18 03:30:16 【问题描述】:

我正在使用 swift 3 在 xcode 上制作应用程序,并且正在使该应用程序具有多个变量。我希望我的应用程序在某个变量处于某个值时进行测试,无论您在什么视图上,都移动到新的视图控制器。我知道我可以使用 segues,但是有很多观点,这会变得混乱。有什么我可以使用的只是使用代码或者更简单的东西。 谢谢

【问题讨论】:

你的变量的值在什么条件下和变量的值对于所有的viewControllers保持不变? 是的,变量将相同并在所有视图中更新 【参考方案1】:

您可以使用属性的didSet 并显示视图控制器。

class TestVC : UIViewController 
    var variable: Int = 10 
        didSet 
            if variable == 20 
                present(someVC, animated: true)
            
        
    


class SomeVC : UIViewController 
    func didFinishWhatever() 
        dismiss(animated: true)
    

【讨论】:

当我尝试将视图控制器名称放在当前位中的代码时,它显示“无法将'TestViewController.type'类型的值转换为预期的参数类型'UIViewController'”【参考方案2】:

您可以在UIViewController 中创建一个extension,并在其中每当您的变量值发生变化时,只需推送/呈现您所需的ViewController

【讨论】:

【参考方案3】:

如果您使用故事板,请尝试以下代码行:

self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewControllerWithIdentifier("SomeVCIdentifier")
 self.window?.rootViewController = initialViewController
 self.window?.makeKeyAndVisible()

【讨论】:

以上是关于强制移动到新的视图控制器(没有 segue)的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义 segue 在导航堆栈上向后移动

如何在 segue 动画之前强制布局?

成功登录后移动到新的视图控制器

如何将信息从 MapKit 注释发送到新的视图控制器

在视图控制器之间传递 iOS 10 Segue 中的数据 [重复]

segue 按钮到下一个视图控制器在 xcode 中引发错误