xcode - 拖动 - 将 UISwitch 连接到委托(delegate)类上的 IBOutlet

标签 xcode swift

我的目标是通过使用委托(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 一样。希望这会对您有所帮助。

enter image description here

关于xcode - 拖动 - 将 UISwitch 连接到委托(delegate)类上的 IBOutlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36242957/

相关文章:

ios - 实现 Facebook Messenger 样式平移到全屏 View 类似效果

ios - 日期格式化程序返回零值

swift - 缩放 MapView 以显示 180 度经线的注释

Swift:如何一步一步画一个圆?

ios - 模态视图关闭后重新加载 TableView

ios - dispatch_async 执行的执行(Swift)

node.js - 无法连接到 Xcode 中的本地服务器

ios - 以自动布局为中心的 UIView 无法正常工作

swift - 有没有办法删除 SwiftUI macOS 项目中的 Main.storyboard?

swift - 函数数组不会保留其创建时的值