尝试segue SWIFT时lldb错误

时间:2014-10-23 21:59:58

标签: ios button swift back sender

当我遇到错误时,我正在关注本教程http://www.raywenderlich.com/76519/add-table-view-search-swift。我将此功能添加到我正在处理的应用程序中。一旦我进入摊位表视图,我希望能够通过导航栏上的按钮导航到主菜单。以下是处理segue的代码部分。

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    self.performSegueWithIdentifier("BoothDetail", sender: tableView)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if segue.identifier == "BoothDetail" {
        let BoothDetailViewController = segue.destinationViewController as UIViewController
        if sender as UITableView == self.searchDisplayController!.searchResultsTableView {
            let indexPath = self.searchDisplayController!.searchResultsTableView.indexPathForSelectedRow()!
            let destinationTitle = self.filteredBooths[indexPath.row].name
            BoothDetailViewController.title = destinationTitle
        } else {
            let indexPath = self.tableView.indexPathForSelectedRow()!
            let destinationTitle = self.booths[indexPath.row].name
            BoothDetailViewController.title = destinationTitle
        }
    }
}

}

尝试使用展位列表中的后退按钮时会抛出错误,该按钮是主会议菜单的直接显示。错误就在这一行。

    if sender as UITableView == self.searchDisplayController!.searchResultsTableView {

2 个答案:

答案 0 :(得分:1)

你有很多问题。有些致命,有些只是头痛。

第一个令人头疼的是你两次叫同一个赛格。这两个函数都调用相同的segue。两者都会执行。现在,如果你想要一个双动画,好吧。但是,由于一个传递数据而另一个没有传递数据,因此您可能会遇到问题。消除didSelectRowAtIndexPath函数。

在您的prepareForSegue方法中,您似乎有两个不同的对象连接到同一个segue。一个searchDisplayController和一个tableView。你想要两个独立的segue。然后你的if / else会根据选择的segue进行更改:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        if segue.identifier == "segue1" {

            //code set 1

        } else if segue.identifier == "segue2" {

            //code set 2
        }
    }

答案 1 :(得分:-1)

我有类似的问题,我刚刚解决了。在tableview中创建segue时,不要将其从单元格中拖出,创建一个名为" BoothDetail" 并将其连接到BoothDetailViewController,创建一个手动segue选择表视图控制器并单击"显示连接检查器"你会在触发的segue下看到手册。

我的问题是发件人是tableviewcell而不是tableview,所以函数

覆盖func tableView(tableView:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){     self.performSegueWithIdentifier(" BoothDetail",sender:tableView) }

从未调用

来传递tableview控制器,所以当你尝试投射它时,你得到了错误。

祝你好运