Протокол не запускает свою функцию в классе - PullRequest
0 голосов
/ 06 мая 2020

У меня проблема с приложением Swift 5. Я создал протокол и сослался на его функцию в двух разных классах, и, похоже, работает только один из двух.

Ниже вы можете увидеть класс, в котором протокол SValue не работает, класс STableViewCell получателя и класс SPickerTableViewCell, который правильно управляет протоколом, поскольку он работает в другом классе. Под «похоже, не работает» я имею в виду, что sPickerValue в классе STableViewCell просто никогда не запускается, тогда как в другом классе он запускается все время.

import Foundation
import UIKit

protocol SValue{
    func sPickerValue(value: String)
}

class STableViewCell: UITableViewCell, SValue{


    override func awakeFromNib() {
        super.awakeFromNib()
        NotificationCenter.default.addObserver(self, selector: #selector(swapRRF), name: .rrf, object: nil)
    }

    (...)

    var currentValue = "1"

    func sPickerValue(value: String) {
        currentValue = value
    }

    (...)

}

class SPickerTableViewCell: UITableViewCell, UIPickerViewDelegate, UIPickerViewDataSource{
    @IBOutlet var sPickerView: UIPickerView!

    (...)

    var delegate: SValue? = nil

    (...)

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        delegate!.sPickerValue(value: String(pData[row]))
        NotificationCenter.default.post(name: .rrf, object: nil)
    }

}

Другое дело, что я ' Мы заметили, что при попытке ввести имя протокола SValue после двоеточия в строке 8 Xcode не заполняет имя автоматически, но приложение все равно успешно компилируется. Есть идеи, почему это может быть так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...