У меня проблема с приложением 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 не заполняет имя автоматически, но приложение все равно успешно компилируется. Есть идеи, почему это может быть так?