在segue(Swift)之后神奇地出现了不需要的UITableViewCellAccessory

时间:2015-03-13 08:38:52

标签: ios uitableview swift uisearchbar segue

我有一个应用程序,显示哪些同事在办公室内,哪些不是(基于令人敬畏的iBeacon内容)。但是,显示它们的UITableView没有按预期工作。

很难解释所以我添加了一些照片。

以下是tableView的正常外观。

Normal state of the tableView

这些是带有UIImage和UILabel的自定义单元格。我还给了每一个细胞在右侧的动作,开始了他/她的个人资料页面。

Action on the right

按下此按钮时,segue启动,我可以将(导航控制器)恢复到此ViewController。这里的一切都还可以。

最重要的是,您还可以使用UISearchBar搜索特定的人。这个额外的tableView按预期工作,找到的人也会获得一个带有segue到他/她的个人资料页面的动作。

Action on SearchResultTableView

然而,当我在THIS segue之后返回tableView(只有这一个,来自普通tableView的那个工作正常)时,我的单元格中突然出现了不需要的附件图标。

Unwanted accessory icons

是什么给出的?我做错什么了吗?操作字段具有以下代码

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

任何帮助都会很好,我已经在这个问题上坚持了好几个小时了。很抱歉,很多图片和代码片段存在很长的问题,但我不知道问题出在哪里,所以我尽量提供尽可能多的信息。

1 个答案:

答案 0 :(得分:0)

我通过删除整个UISearchDisplayController并实现UISearchController来修复此问题。

原来,UISearchDisplayController在最新的Xcode beta版本中显示为已弃用。