【问题标题】:'_.SegmentedControlItems' does not implement methodSignatureForSelector: -- trouble ahead Unrecognized selector'_.SegmentedControlItems' 没有实现 methodSignatureForSelector: -- 前面的麻烦无法识别的选择器
【发布时间】:2017-06-26 17:04:17
【问题描述】:

我正在以编程方式创建一个没有情节提要的 UISegmented 控件。我尝试使用模型类,而不是从数组中提取分段项,

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:警告:“Appname.SegmentedControlItems”类的对象 0x600000251640 未实现 methodSignatureForSelector:-- 前方有问题 无法识别的选择器 -[Appname.SegmentedControlItems 复制]

请帮忙

【问题讨论】:

  • 你为什么使用SegmentedControlItems-init(items:) 等待 StringUIImage 对象的数组。字符串符合NSCopying 协议,所以我猜UISegmentedControl 会复制它们。要么不使用SegmentedControlItems,要么让它们符合NSCopying

标签: ios uisegmentedcontrol swift4


【解决方案1】:

这里的问题是您提供了一个对象数组(它又包含作为属性的值),而不是传递一个标题数组。

如果要使用模型,则必须更改以下行

let segmentedControl = UISegmentedControl(items: items)

let segmentedControl: UISegmentedControl = UISegmentedControl(items: items.map({
        $0.title
    }))

【讨论】:

  • 很高兴为您提供帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 2019-04-07
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多