不需要的 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 测试版中显示为已弃用。