【问题标题】:lldb error when trying to segue SWIFT尝试 segue SWIFT 时出现 lldb 错误
【发布时间】:2014-12-19 17:14:34
【问题描述】:

当我遇到错误时,我正在学习本教程 http://www.raywenderlich.com/76519/add-table-view-search-swift。我正在将此功能添加到我已经在使用的应用程序中。进入展位表视图后,我希望能够使用导航栏上的按钮导航到主菜单。这是处理segues的代码部分。

    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 {

【问题讨论】:

  • 错误是 llddb,上面写着 Thread 1: EXC_BREAKPOINT(code=EXC_I386_BPT, subcode=0x0)

标签: ios button swift back sender


【解决方案1】:

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

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

在您的 prepareForSegue 方法中,您似乎有两个不同的对象连接到同一个 segue。一个 searchDisplayController 和一个 tableView。你想要两个单独的转场。然后您的 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
        }
    }

【讨论】:

    【解决方案2】:

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

    我的问题是发送者是一个tableviewcell而不是tableview,所以函数

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

    从来没有被调用来传递 tableview 控制器,所以当你尝试转换它时,你会得到错误。

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2022-11-22
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多