簡體   English   中英

如何訪問擴展中的 UIButtons?

[英]How do I access UIButtons in extensions?

我是 swift 的新手,請多多包涵。

我正在嘗試在主 ViewController class 之外的擴展中啟用一個按鈕。 基本上,我只希望用戶的藍牙天線打開並工作時按鈕工作。 它看起來像這樣:

extension UIViewController: CBCentralManagerDelegate {

        //function called after manager is initialized, state of bluetooth on manager
        public func centralManagerDidUpdateState(_ central: 
CBCentralManager) {
            switch central.state {
                  case .unknown:
                    print("central.state is .unknown")
                  case .resetting:
                    print("central.state is .resetting")
                  case .unsupported:
                    print("central.state is .unsupported")
                  case .unauthorized:
                    print("central.state is .unauthorized")
                  case .poweredOff:
                    print("central.state is .poweredOff")
                  case .poweredOn:
                    print("central.state is .poweredOn")
                    connectButton.isEnabled = true
               
                  @unknown default:
                    print("central.state is .unknown")
            }
        
        }
}

如您所見,在 .poweredOn 情況下,我嘗試啟用我的按鈕。 但是,我不斷收到“使用未解析的標識符”錯誤。 這是我聲明按鈕的方式:

class ViewController: UIViewController {


    @IBOutlet var voltageOut: UILabel!
    @IBOutlet public var connectButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        connectButton.isEnabled = false
        //initializing manager
        myVars.centralManager = CBCentralManager(delegate: self, queue: nil)
    }


    @IBAction func connectButton(_ sender: Any) {
        connect()
    }
}

我已經搜索了幾個小時,我嘗試讓 class 開放/公開,當我在 class 之外聲明我的按鈕時,我在覆蓋 ZC1C425268E6785D1AB61DZ 中通過“connectButton.isEnabled = false”得到另一個錯誤。 如何訪問主 ViewController class 之外的按鈕?

您正在擴展基礎 class UIViewController,而不是擴展您的子類 ViewController。 基礎 class 對您在子類中聲明的屬性一無所知。

改變

extension UIViewController: CBCentralManagerDelegate {

extension ViewController: CBCentralManagerDelegate {

您需要為 vc 名稱而不是通用UIViewController進行擴展,因為它實際上對connectButton

extension ViewController: CBCentralManagerDelegate {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM