2013-12-26 4 views
1

Я пытаюсь выполнить segue в подкласс под названием «Детальный студент», нажав на соответствующий результат поиска. К сожалению, это не сработает. Я не могу понять, почему это не работает. Вот мой код до сих пор:Выполните Segue после нажатия на результат поиска

if (tableView == self.searchDisplayController.searchResultsTableView) 
{student = [self.searchResults objectAtIndex:indexPath.row]; 
NSString *fullname = [NSString stringWithFormat:@"%@ %@", student.vorname, student.name]; 
cell.textLabel.text = fullname; 
cell.detailTextLabel.text = student.hatBetrGrund.name; 
    DetailStudent *controller = [self.storyboard instantiateViewControllerWithIdentifier :@"DetailStudent"]; 
    controller.delegate = self; 
    controller.managedObjectContext = self.managedObjectContext; 

    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
    self.selectedStudent = [self.fetchedResultsController objectAtIndexPath:indexPath]; 

    controller.student = self.selectedStudent; 
    NSLog(@"Wow"); 

} 

ответ

1

Есть несколько вещей, которые не ясно, в вашем коде:

Во-первых, вы устанавливаете текст текста и подробно этикетки. Это относится к cellForRowAtIndexPath или к другому методу, например configureCell. Однако выбор из табличного представления осуществляется через didSelectRowAtIndexPath. Убедитесь, что вы настроили свою ячейку одним методом и реагируете на выбор в другом.

Во-вторых, вы создаете экземпляр своего контроллера, но не представляете его. Вы можете либо

  • инстанцирует контроллер представления и представить его через presentViewController:animated: или
  • ссылку вид контроллера детали через Segue в раскадровке. В этом случае вам не нужно создавать экземпляр, а просто звоните performSegueWithIdentifier. Вы настраиваете свой подробный вид в prepareForSegue.
+0

Привет, Мунди, большое спасибо за ваш ответ. Я пытался следовать вашим инструкциям, но я не смог решить свою проблему. Я уже создал Segue Called «Подробный Student Segue» –

+0

, но я не могу выполнитьSegueWithIdentifier из вышеописанного метода. '[self performSegueWithIdentifier: @" Подробный Student Segue "sender: fullname];' Приложение вылетает из-за "причины:" Получатель () не имеет идентификатора с идентификатором 'Подробный Student Segue' –

+0

'else if ([segue.identifier isEqualToString: @ "Подробный студент Seque"]) { DetailStudent * detailStudent = segue.destinationViewController; detailStudent.delegate = self; detailStudent.managedObjectContext = self.managedObjectContext; NSIndexPath * indexPath = [self.tableView indexPathForSelectedRow]; self.selectedStudent = [self.fetchedResultsController objectAtIndexPath: indexPath]; detailStudent.student = self.selectedStudent; } ' –

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