我有一个应用程序,显示哪些同事在办公室内,哪些不是(基于令人敬畏的iBeacon内容)。但是,显示它们的UITableView没有按预期工作。
很难解释所以我添加了一些照片。
以下是tableView的正常外观。
这些是带有UIImage和UILabel的自定义单元格。我还给了每一个细胞在右侧的动作,开始了他/她的个人资料页面。
按下此按钮时,segue启动,我可以将(导航控制器)恢复到此ViewController。这里的一切都还可以。
最重要的是,您还可以使用UISearchBar搜索特定的人。这个额外的tableView按预期工作,找到的人也会获得一个带有segue到他/她的个人资料页面的动作。
然而,当我在THIS segue之后返回tableView(只有这一个,来自普通tableView的那个工作正常)时,我的单元格中突然出现了不需要的附件图标。
是什么给出的?我做错什么了吗?操作字段具有以下代码
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
var pingAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "Ping", handler:{action, indexpath in
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
self.searchDisplayController?.setActive(false, animated: false)
self.performSegueWithIdentifier("openMap", sender: indexPath)
})
pingAction.backgroundColor = UIColor(red: 232/255, green: 75/255, blue: 4/255, alpha: 1)
return [pingAction]
}
没有这一行
self.searchDisplayController?.setActive(false, animated: false)
返回此屏幕后,ViewController甚至会完全变黑。
我从来没有在我的代码和我的cellForRowAtIndexPath中给我的单元格任何accessoryView我甚至写过
customCell.accessoryType = UITableViewCellAccessoryType.None
但没有运气。奇怪的是,当从普通的tableView和searchResultsTableView转到配置文件页面时,它几乎使用完全相同的segue,但是最后一个在这样做时会给你带来麻烦。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
... // Other segues
else if segue.identifier == "openMap" {
let dvc: MapViewController = segue.destinationViewController as MapViewController
var person: Person
if self.searchDisplayController!.active == true {
tableView = self.searchDisplayController!.searchResultsTableView
person = self.filteredPersons[sender!.row]
} else {
tableView = self.tblPersons as UITableView
person = personsManager.getPersonsMixed()[sender!.section][sender!.row]
}
dvc.person = person
}
... // Other segues
任何帮助都会很好,我已经在这个问题上坚持了好几个小时了。很抱歉,很多图片和代码片段存在很长的问题,但我不知道问题出在哪里,所以我尽量提供尽可能多的信息。
答案 0 :(得分:0)
我通过删除整个UISearchDisplayController并实现UISearchController来修复此问题。
原来,UISearchDisplayController在最新的Xcode beta版本中显示为已弃用。