“_.SegmentedControlItems”不实现methodSignatureForSelector: - 麻烦了无法识别的选择
我编程方式创建UISegmented控制,而不storyboard.Instead从阵列中拔出分割的项目,我想使用模型类的,“_.SegmentedControlItems”不实现methodSignatureForSelector: - 麻烦了无法识别的选择
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复制]
请帮
这里的问题在于你提供了一个对象数组(它依次包含值作为一个属性),而不是传递一个标题数组。
如果你想使用的模式,你必须以下行
let segmentedControl = UISegmentedControl(items: items)
改变
let segmentedControl: UISegmentedControl = UISegmentedControl(items: items.map({
$0.title
}))
非常感谢..它工作.. :) –
很高兴成为帮助 – Malik
为什么你使用'SegmentedControlItems'? '-init(items:)'等待一个String或UIImage对象的数组。一个字符串符合'NSCopying'协议,所以我猜'UISegmentedControl'会拷贝它们。要么你不使用'SegmentedControlItems',或者你可以让它们符合'NSCopying'。 – Larme