2015-06-07 2 views
1

Код в вопросе:приемник ... не имеет SEGUE с ошибкой идентификатора

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    tableView.deselectRowAtIndexPath(indexPath, animated: true) 

    var card: String 

    if (tableView == self.searchDisplayController?.searchResultsTableView){ 
     card = self.filtered[indexPath.row] 
    } 

    else{ 
     card = self.array[indexPath.row] 
    } 



    let destinationVC = SearchViewController() 
    destinationVC.searchString = card 
    destinationVC.performSegueWithIdentifier("ResultSegue", sender: self) 

} 

Я пытаюсь передать строку с другой точкой зрения при выборе ячейки в моей таблице. В раскадровке я назвал идентификатор segue «ResultSegue».

Что происходит, когда я запускаю свое приложение, когда я нажимаю на ячейку, он загружает следующее представление, без переменной, которую я отправляю, будучи обновленным, тогда, если я вернусь и нажму на новую ячейку, приложение будет разбиваться и давать мне озаглавленное предупреждение.

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

+0

вы имели в виду осуществить didSelectRow, не didDeselectRow? – rdelmar

+0

http://stackoverflow.com/questions/26207846/pass-data-through-segue вот такой вопрос, который, я думаю, может вам помочь! показать, как передать данные. Я также согласен с @rdelmar, это неправильная функция. – Jay

+0

@Jay Да, я исправил функцию справа. Я использовал ссылку, которую вы опубликовали, чтобы получить код, который у меня есть сейчас, у кого-то из комментариев была та же проблема, что у меня есть, но они не указали, как они ее разрешили – Chris

ответ

0

Вы должны передать строку в функции prepareForSegue, а не didSelectRowAtIndexPath.

Вместо использования didSelectRowAtIndexPath, как показано ниже:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "ResultSegue" { 

     if let indexPath = self.tableView.indexPathForSelectedRow() { 
      var card: String 
      if (tableView == self.searchDisplayController?.searchResultsTableView) { 
       card = self.filtered[indexPath.row] 
      } else { 
       card = self.array[indexPath.row] 
      } 
      (segue.destinationViewController as SearchViewController).searchString = card 
     } 
    } 
} 
Смежные вопросы