我的目标是通过使用委托(delegate)的 UISwitch 启用/禁用 UITextField 的编辑。这是委托(delegate)类:
import Foundation
import UIKit
class SwitchedTextFieldDelegate : NSObject, UITextFieldDelegate{
@IBOutlet weak var switchText : UISwitch!
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
//Here I intended to read the UISwitch state
print("Can't touch this")
return false
}
}
我尝试将 IBOutlet 拖动连接到 Storyboard,但这是不可能的。我可以在继承 UIViewController 的主视图 Controller 上执行此操作。我已经了解到多重继承在 Swift 中是不可能的。你会如何解决这个问题?我将尝试使用 IBAction。
最佳答案
在主视图 Controller 中拖动 UITextField 和 UISwitch 的 IBOutlet。然后确认UITextField Delegate。现在实现 UITextField Delegate 方法,如下所示:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if switchText.on{
return true
}else{
return false
}
}
为了更好地理解,我分享了我的 ViewController 屏幕截图。这里 FirstViewController 就像你的 MainViewController 一样。希望这会对您有所帮助。
关于xcode - 拖动 - 将 UISwitch 连接到委托(delegate)类上的 IBOutlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36242957/