随机ViewController中设置值(随机segue)

时间:2016-06-23 20:52:30

标签: ios swift uiviewcontroller segue

我有12个ViewControllers。我的代码给这些ViewControllers之一(1-12)

提供了一个随机的segue
let segues = ["View1", "View2", "View3", "View4", "View5", "View6", "View7", "View8", "View9", "View10", "View11", "View12"]
    let index = Int(arc4random_uniform(UInt32(segues.count)))
    let segueName = segues[index]
    self.performSegueWithIdentifier(segueName, sender: self)

现在,我想更改已选择的随机ViewController中的变量(var firstSegue = false),但我无法弄清楚如何?

有人可以将其更改为可行的内容吗?

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    let destinationVC = segue.destinationViewController as UIViewController
    destinationVC.firstSegue = true
}

2 个答案:

答案 0 :(得分:4)

制作具有firstSegue属性的协议,并将其扩展到所有视图控制器。然后使用as? TheProtocolYouMade代替as UIViewController

或者使用一个共同的子类。

编辑:示例代码

  

使用firstSegue属性

制作协议
protocol P {
    var firstSegue: Bool { get set }
}
  

将其扩展到所有视图控制器。

extension YOURViewController1: P {
}

假设YOURViewController1中有var firstSegue: Bool。现在该属性是YOURViewController1符合协议P的方式。对具有该属性的所有视图控制器执行此操作。

现在你可以写这段代码了

if let asP = segue.destinationViewController as? P {
   // you can access asP.firstSegue here
}

答案 1 :(得分:0)

由于此控制器的属性不是来自标准的UIViewController,而是一些自定义控制器,因此您可以强制转换它而不是填充此值。你也可以使用KVC - 这不是真正安全的解决方案。

相关问题