2011-08-30 18 views
9

Mam UITableViewController. Kiedy klikam komórkę, chcę wprowadzić nowy widok. To działa dobrze, ale nowy widok nie ma przycisku Wstecz. Dlaczego to?Przycisk powrotu nie pojawia się na wciśniętym UIViewController

TableViewCode:

if([[NSUserDefaults standardUserDefaults] boolForKey:@"isLoggedIn"]) 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    ProfileViewController* profileViewController = [[ProfileViewController alloc] initWithNibName:@"ProfileViewController" bundle:nil]; 
    profileViewController.message = [NSDictionary dictionaryWithObjectsAndKeys:cell.textLabel.text, @"user_login", @"default", @"message_source", nil]; 
    switch(indexPath.row) { 
     case kUsernameRow:     
      [self.navigationController pushViewController:profileViewController animated:YES]; 
      [profileViewController release]; 
      break; 
     case kAboutRow:     
      break; 
     case kTOSRow:     
      break; 
    } 
} 
+1

Czy ustawiłeś 'self.navigationItem.backBarButtonItem;' w widoku rodzica? – Nekto

+1

ProfileViewController ma tylko 'self.navigationItem.rightBarButtonItem = replyButton;' –

+1

Nie profil, ** parent ** z 'ProfileViewController'. – Nekto

Odpowiedz

14

Jeśli kontroler widoku tabeli jest tworzony ze stalówką, jego domyślna nazwa to @"" (uwaga: nie nil, ale pusty strunowy).

Przycisk "Wstecz" zawiera błąd, w którym nie wyświetla się, jeśli tytuł poprzedniego kontrolera na stosie nawigacyjnym jest pustym ciągiem, więc wewnątrz kontrolera widoku tabeli należy ustawić tytuł na nil lub jakiś ciąg w kodzie, lub jakiś ciąg w Konstruktorze interfejsu (nie można go ustawić na nil tam afaik).

4

Z dokumentacji Apple:

Pasek poz przycisk po lewej stronie paska nawigacyjnego umożliwia nawigację do poprzedniego widoku kontrolera na stos nawigacyjnym. Kontroler nawigacyjny aktualizuje lewą stronę paska nawigacji w następujący sposób:

Jeśli nowy kontroler widoku najwyższego poziomu ma niestandardowy przycisk lewego przycisku paska, ten element jest wyświetlany. Aby określić niestandardowy element przycisku lewego paska, należy ustawić właściwość leftBarButtonItem elementu nawigacyjnego kontrolera widoku.

Jeśli kontroler widoku najwyższego poziomu nie ma niestandardowego elementu przycisku lewego paska, ale element nawigacyjny poprzedniego kontrolera widoku ma prawidłową pozycję we właściwości backBarButtonItem, pasek nawigacji wyświetla ten element.

Jeśli niestandardowy element przycisku paska nie jest określony przez jeden z kontrolerów widoku, używany jest domyślny przycisk Wstecz i jego tytuł jest ustawiony na wartość właściwości title poprzedniego kontrolera widoku, czyli kontrolera widoku. jeden poziom niżej na stosie. (. Jeśli jest tylko jeden kontroler widok na stosie nawigacyjnym nie jest wyświetlany przycisk Wstecz)

+0

Nie rozumiem, dlaczego domyślny przycisk powrotu nie jest wyświetlany. Właśnie mam 2 UITableViewControllers, wszystko wewnątrz NavigationController. Pierwszy widok tabeli przesuwa drugi. –

+0

Sprawdź, czy 'self.navigationController' nie jest zerowy. – Nekto

+1

nie może mieć wartości null, ponieważ '[self.navigationController pushViewController: profileViewController animated: YES]; 'works –

2

Sprawdź, czy kontroler nawigacji ma włączony pasek nawigacji. Kliknij na pasku nawigacyjnym pod kontrolerem nawigacyjnym w IB i sprawdź, czy "ukryte" jest odznaczone. Jeśli zostanie zaznaczone, pasek nawigacyjny nie zostanie wyświetlony, a przycisk Wstecz również będzie niewidoczny.

Powiązane problemy