在不同 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 来说太过分了。
我正尝试在我的容器应用程序中为我在 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 来说太过分了。