在不同 swift 目标之间传递 Bool() 值

Pass Bool() value between dfferent swift targets

我正尝试在我的容器应用程序中为我在 Swift 中的 iOS8 的自定义键盘创建一个设置视图控制器。我已经创建了一个 Bool() 并且我得到了我需要的东西,但是现在我需要让键盘目标检查 bool 值并且我无法导入其他 swift 文件..

我有这个代码:

ViewControllerSettings.swift:

@IBOutlet weak var Switch1: UISwitch!

var dotOn = Bool()


override func viewDidLoad() {
    super.viewDidLoad()


    if NSUserDefaults.standardUserDefaults().boolForKey("dotOn") == true {

        Switch1.setOn(true, animated: true)

    } else {

        Switch1.setOn(false, animated: true)

    }


  @IBAction func backSave(sender: UIButton) {

    if Switch1.on == true {


        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "dotOn")

    } else {

        NSUserDefaults.standardUserDefaults().setBool(false, forKey: "dotOn")

    }
  }

而且效果很好!但是在我的 KeyboardViewController.swift 中,我在 viewDidAppear(animated: true) 中拥有的应用程序的另一个目标中:

  if NSUserDefaults.standardUserDefaults().boolForKey("dotOn") == true {

let bSelector : Selector = "dotAfterSpace:"
    let doubleTapGesture = UITapGestureRecognizer(target: self, action:   bSelector)
    doubleTapGesture.numberOfTapsRequired = 2
    space.addGestureRecognizer(doubleTapGesture)

 } else { }

这个没有 "if" 的函数运行良好...我该怎么办?


根据一些建议,我编写了这段代码...但是我哪里错了?

KeyboardViewController.swift:

class KeyboardViewController: UIInputViewController {
     var otherController = ViewControllerSettings()

override func viewDidAppear(animated:Bool) {
   super.viewDidAppear(animated)

   KeyboardViewController().otherController = ViewControllerSettings()

    if otherController.dotOn {

        let bSelector : Selector = "dotAfterSpace:"
        let doubleTapGesture = UITapGestureRecognizer(target: self, action: bSelector)
        doubleTapGesture.numberOfTapsRequired = 2
        space.addGestureRecognizer(doubleTapGesture)

    } else { }

    let aSelector : Selector = "spacePressed:"
    let tapGesture = UITapGestureRecognizer(target: self, action: aSelector)
    tapGesture.numberOfTapsRequired = 1
    space.addGestureRecognizer(tapGesture)

}

ViewControllerSettings.swift:

class ViewControllerSettings: UIViewController {

 var dotOn = Bool()

在控制器的两侧创建一个 属性:

class ViewController1:<CtrlType1> {
   var otherController:<CtrlType2>

   func doSomething() {
     if otherController.sharedBool { .... }
   }
 }

class ViewController2:<CtrlType2> {
   var sharedBool = false

 }

在您创建两个实例的地方(或由 IB 创建的地方)添加

 viewController1.otherController = viewController2

这样您就可以在两种情况下都使用 bool。

另一种方法是使用单例,但对于简单的 bool 来说太过分了。