如何识别委托对象
How to Identify Delegating Object
我正在使用委派并以两种不同的方式使用相同的 class。
protocol ColorSwitchDelegate {
func colorSwitched(picker: ColorSwitch, color: ColorChoice)
}
class ColorSwitch: UIView {
var delegate: ColorSwitchDelegate?
func doSomething() {
delegate?.colorSwitched(picker: self, color: color)
}
}
class SettingsViewController: UIViewController, ColorSwitchDelegate {
@IBOutlet weak var myView1: ColorSwitch!
@IBOutlet weak var myView2: ColorSwitch!
func viewWillAppear(_ animated: Bool) {
myView1.delegate = self
myView2.delegate = self
}
func colorSwitched(picker: ColorSwitch, color: ColorChoice) {
// I want to find out if myView1 or myView2 is the delegating object
}
}
我想确定委托者是哪个视图(myView1 或 myView2)。我可以在 ColorSwitch class 中添加一个标签,但这似乎不够优雅。有没有更好的方法?
您可以使用标识运算符 === 直接签入 colorSwitched
,它测试两个对象引用是否都引用同一个对象实例。
func colorSwitched(picker: ColorSwitch, color: ColorChoice) {
if picker === self.myView1 {
//myView1
} else {
//myView2
}
}
我正在使用委派并以两种不同的方式使用相同的 class。
protocol ColorSwitchDelegate {
func colorSwitched(picker: ColorSwitch, color: ColorChoice)
}
class ColorSwitch: UIView {
var delegate: ColorSwitchDelegate?
func doSomething() {
delegate?.colorSwitched(picker: self, color: color)
}
}
class SettingsViewController: UIViewController, ColorSwitchDelegate {
@IBOutlet weak var myView1: ColorSwitch!
@IBOutlet weak var myView2: ColorSwitch!
func viewWillAppear(_ animated: Bool) {
myView1.delegate = self
myView2.delegate = self
}
func colorSwitched(picker: ColorSwitch, color: ColorChoice) {
// I want to find out if myView1 or myView2 is the delegating object
}
}
我想确定委托者是哪个视图(myView1 或 myView2)。我可以在 ColorSwitch class 中添加一个标签,但这似乎不够优雅。有没有更好的方法?
您可以使用标识运算符 === 直接签入 colorSwitched
,它测试两个对象引用是否都引用同一个对象实例。
func colorSwitched(picker: ColorSwitch, color: ColorChoice) {
if picker === self.myView1 {
//myView1
} else {
//myView2
}
}