'_.SegmentedControlItems' не реализует methodSignatureForSelector: - проблема впереди Нераспознанный селектор
Я программно создаю элемент управления UISegmented без раскадровки. Вместо того чтобы извлекать сегментированные элементы из массива, я пытаюсь использовать Model Class,
class SegmentedControlItems{
let title: String
init(title:String) {
self.title = title
}
}
Затем, в функции табличного представления, я написал следующий код
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
headerView.backgroundColor = UIColor.white
let items:[SegmentedControlItems] = {
let item1 = SegmentedControlItems(title: "Repeat Task")
let item2 = SegmentedControlItems(title: "One time task")
return [item1, item2]
}()
let segmentedControl: UISegmentedControl = {
let segmentedControl = UISegmentedControl(items: items)
segmentedControl.tintColor = UIColor(red:0.44, green:0.75, blue:0.27, alpha:1.0)
segmentedControl.selectedSegmentIndex = 0
segmentedControl.translatesAutoresizingMaskIntoConstraints = false
return segmentedControl
}()
headerView.addSubview(segmentedControl)
}
Мое приложение работает нормально, если я передаю массив элементов. Но происходит сбой после того, как я написал код выше. И дает мне эту ошибку в консоли - SForwarding: предупреждение: объект 0x600000251640 класса 'Appname.SegmentedControlItems' не реализует methodSignatureForSelector: - проблема впереди нераспознанный селектор -[копия Appname.SegmentedControlItems]
Пожалуйста помоги
1 ответ
Проблема здесь в том, что вы предоставляете массив объектов (который, в свою очередь, содержит значения в качестве атрибута) вместо передачи массива заголовков.
Если вы хотите использовать модель, вы должны изменить следующую строку
let segmentedControl = UISegmentedControl(items: items)
в
let segmentedControl: UISegmentedControl = UISegmentedControl(items: items.map({
$0.title
}))