0

私は人を含むTableViewを持っています。セルをタップすると、別のビューへのシークが実行されます。

検索は機能します。しかし、検索してキャンセルし、1 つのセルをタップして戻ってもう一度検索すると、クラッシュします。EXC_BAD_INSTRUCTION。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{

    var cell = UITableViewCell()


    if let sdc = self.searchDisplayController {

        if sdc.active {

        if let c: AnyObject? = self.tableView.dequeueReusableCellWithIdentifier("CellPerson"){


            cell = c as UITableViewCell
            cell.textLabel.text = personsFiltered[indexPath.row]! 

            }
            else
            {
                cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")
            }


        } else {

        if let c: AnyObject? = self.tableView.dequeueReusableCellWithIdentifier("CellPerson"){


            cell = c as UITableViewCell
            cell.textLabel.text = persons[indexPath.row]! 

            }
            else
            {
                cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell")
            }

    }


    return cell
}
4

1 に答える 1

0

クラッシュが発生している正確な場所の詳細がわからないと、クラッシュの原因を特定することは困難ですが、self.tableView からのデキュー行に問題がある可能性があります。このデリゲート コールバックfunc tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath では、tableView パラメーターは searchDisplayController またはバッキング TableViewController からのものである可能性があります。正しい tableView から確実にデキューするにはself.tableViewtableView.

またUISearchDisplayController、iOS 8 で廃止予定になっていることにも注意しUISearchControllerてください。これが関連していない場合は、すぐに他の問題が発生する可能性があります。

于 2015-02-16T13:40:40.530 に答える