我的项目是一个地图,上面有很多注释点,用户可以通过 pickerView 查找特定的注释。一切都很好,除了所有注释点的列表似乎是随机显示的。我想按字母顺序对注释进行排序。
这是我的当前工作代码:
(我已经尝试过,但是没有成功)
我遇到了这个错误:
这是我的当前工作代码:
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return self.mapView.annotations[row].title ?? "No title"
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
self.mapView.selectAnnotation(self.mapView.annotations[row], animated: true)
}
我尝试过实现这个,但没有成功...
(我已经尝试过,但是没有成功)
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
let sortedNames = self.mapView.annotations.sorted(by: {$0.title < $1.title})
return sortedNames[row].title ?? "No title"
}
我遇到了这个错误:
有什么提示将不胜感激。无法将类型为 'String??' 的值转换为预期的参数类型 'UIContentSizeCategory'
sortedNames
实际上是按标题排序的MKMapAnnotation
数组。如果你真的需要这样做,你可以像这样将它转换为字符串数组:let sortedNames = self.mapView.annotations.sorted(by: {$0.title < $1.title}).flatMap({ $0.title })
。 - creeperspeak