'_.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
    }))
Другие вопросы по тегам