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

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

【问题讨论】:

  • 你的变量的值在什么条件下和变量的值对于所有的viewControllers保持不变?
  • 是的,变量将相同并在所有视图中更新

标签: ios swift uiviewcontroller xcode-storyboard


【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多