2012-02-22 18 views
12

Mam skonfigurować UITableView przy użyciu NSFetchedResultsController, który wyświetla liczbę prototypów UITableViewCells. Podłączyłem pushue z mojego UITableViewCell do mojego DetailViewController.prepareForSegue nie jest wywoływany, gdy wybrany jest wiersz UITableView?

W moim TableViewController I wprowadziły zarówno:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"%s", __PRETTY_FUNCTION__); 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSLog(@"%s", __PRETTY_FUNCTION__); 
} 

Kiedy uruchomić aplikację i kliknij na wiersz w Tableview moja aplikacja wywołuje tylko:

[TableViewController tableView:didSelectRowAtIndexPath:] 
[TableViewController tableView:didSelectRowAtIndexPath:] 
[TableViewController tableView:didSelectRowAtIndexPath:] 

Jeśli usunę segue i rewire to z UIBarButtonItem do DetailViewController, a następnie, jeśli ktoś się zastanawia, co mi brakuje, nazywa się go prawidłowo.

EDIT:

Dodano:

- (IBAction)tester:(id)sender { 
    [self performSegueWithIdentifier:@"SEGTEST" sender:nil]; 
} 

i podłączeniu go do w UIButtonBarItem że nazwie "tester" i to działa, po prostu nie mogę zmusić go do ognia, gdy jeszcze połączyć z UITableViewCell do kontrolera.

+0

Podoba mi się moja odpowiedź poniżej. Dlaczego po prostu nie połączyć go z ViewController do ViewController i wywołać w metodzie didSelectCell? – Darren

+0

Mogę zgadywać, byłem bardziej ciekawy, dlaczego nie strzelał. Jedyną różnicą, jaką widzę między tą a działającą wersją, jest to, że ta wersja używa Core Data i UIFetchedResultsController, chociaż nie rozumiem, jak to powinno mieć znaczenie. – fuzzygoat

Odpowiedz

31

Po trochę kopanie w końcu okazało się, że identyfikator UITableViewCell został nieprawidłowo ustawione na „CELL_ID”, kiedy to powinna być „PLANTCELL_ID”.

Som dla nikogo innego, kto stwierdzi, że wybranie UITableViewCell w UITableView nie wywołać skojarzony segue, sprawdzić, czy identyfikator komórki jest ustawiony prawidłowo zarówno w serii ujęć i tableView:cellForRowAtIndexPath:.

6

Przebuduj swoją segue z samego siebie i nadaj jej nazwę. Potem w rozmowie didSelectRow metoda

[self performSegueWithIdentifier:@"yourSegueName"];  

i sprawdzić, czy pożary.

+0

Rzeczywiście wystrzeliwuje, ale w jaki sposób przekazujemy dane do zainicjowanej sceny/widoku. –

+0

Używasz metody prepareForSegue. – Darren

Powiązane problemy