不需要的 UITableViewCellAccessory 在 segue 之后神奇地出现 (Swift)
Unwanted UITableViewCellAccessory magically appears after segue (Swift)
我有一个应用程序可以显示哪些同事在办公室,哪些不在(基于很棒的 iBeacon 东西)。但是,显示它们的 UITableView 没有按预期工作。
很难解释所以我添加了一些图片。
下面是 tableView 的正常外观。
这些是带有 UIImage 和 UILabel 的自定义单元格。我还在右侧为每个单元格设置了一个操作,该操作开始转至 his/her 个人资料页面。
当按下这个按钮时,segue 开始,我可以恢复(导航控制器)到这个 ViewController。这里一切仍然正常。
在顶部,您还可以使用 UISearchBar 来搜索特定的人。这个额外的 tableView 按预期工作,找到的人也获得了一个操作,并转到 his/her 个人资料页面。
但是,当我 return 在这个 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)
在 return 转到此屏幕时,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
很高兴获得任何帮助,我已经在这个问题上停留了好几个小时了。很抱歉这个问题很长,有很多图片和代码片段,但我不知道问题出在哪里,所以我尽量提供尽可能多的信息。
我通过删除整个 UISearchDisplayController 并实现 UISearchController 来解决这个问题。
原来 UISearchDisplayController 在最新的 Xcode 测试版中显示为已弃用。
我有一个应用程序可以显示哪些同事在办公室,哪些不在(基于很棒的 iBeacon 东西)。但是,显示它们的 UITableView 没有按预期工作。
很难解释所以我添加了一些图片。
下面是 tableView 的正常外观。
这些是带有 UIImage 和 UILabel 的自定义单元格。我还在右侧为每个单元格设置了一个操作,该操作开始转至 his/her 个人资料页面。
当按下这个按钮时,segue 开始,我可以恢复(导航控制器)到这个 ViewController。这里一切仍然正常。
在顶部,您还可以使用 UISearchBar 来搜索特定的人。这个额外的 tableView 按预期工作,找到的人也获得了一个操作,并转到 his/her 个人资料页面。
但是,当我 return 在这个 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)
在 return 转到此屏幕时,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
很高兴获得任何帮助,我已经在这个问题上停留了好几个小时了。很抱歉这个问题很长,有很多图片和代码片段,但我不知道问题出在哪里,所以我尽量提供尽可能多的信息。
我通过删除整个 UISearchDisplayController 并实现 UISearchController 来解决这个问题。
原来 UISearchDisplayController 在最新的 Xcode 测试版中显示为已弃用。