2014-10-23 4 views
2

Я следовал этому руководству http://www.raywenderlich.com/76519/add-table-view-search-swift, когда я столкнулся с ошибкой. Я добавляю эту функцию в приложение, над которым я уже работал. Когда я нахожусь в представлении таблицы кабин, я хочу, чтобы вы могли перейти в главное меню с помощью кнопки на панели навигации. Вот раздел кода, который посвящен segues.lldb ошибка при попытке segue SWIFT

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 { 
+0

Какая ошибка? – AdamPro13

+0

Ошибка llddb, она говорит, что Thread 1: EXC_BREAKPOINT (код = EXC_I386_BPT, subcode = 0x0) – user3558131

ответ

1

У вас довольно много проблем. Некоторые фатальные, некоторые просто головная боль.

Первая головная боль - вы вызываете один и тот же сеанс дважды. Обе функции называют один и тот же сегмент. Оба будут выполнены. Теперь, если вам нужна двойная анимация, хорошо. Но так как один передает данные, а другой - нет, у вас может быть проблема. Исключите функцию didSelectRowAtIndexPath.

В вашем методе prepareForSegue кажется, что у вас есть два разных объекта, подключенных к одному и тому же сегменту. 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 
     } 
    } 
-1

У меня была аналогичная проблема, и я просто решил ее решить. При создании вашего segue в представлении таблицы не перетаскивайте его из ячейки, создайте ручную секцию под названием «BoothDetail» и подключите ее к BoothDetailViewController, чтобы создать ручную секцию, выберите контроллер табличного представления и нажмите «показать инспектор подключений», вы будете см. руководство по запущенному сегменту.

Моя проблема отправитель был tableviewcell и не TableView, поэтому функция

переопределение функ Tableview (Tableview: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { self.performSegueWithIdentifier ("BoothDetail", отправитель: Tableview) }

никогда не вызывался, чтобы передать контроллер таблицы, поэтому, когда вы пытаетесь его бросить, вы получаете ошибку.

удача

Смежные вопросы