2013-11-04 9 views
5

W trybie portretu na symulatorze iPhone'a lub w orientacji poziomej na urządzeniu pokazuje wszystkie przyciski paska nawigacji, ale gdy jest używany w trybie portretu na urządzeniu, przycisk nie jest wystawiany. Poniżej znajdują się obrazy pasków nawigacyjnych.Pasek nawigacji iPhone'a nie pokazuje wszystkich przycisków na urządzeniu

Simulator shows button

Device doesn't show button

Urządzenie Mam do testów jest 4S iPhone z iOS 6.1.3 (10B329). Symulator, którego używam, to wersja 7.0 (463.9.4) z systemem iOS 6.0/6.1.

Rozważam usunięcie przycisku Szukaj w trybie edycji, ale wolę pozostawić tę opcję dla użytkownika niezależnie od trybu.

Każda pomoc lub wgląd jest doceniany, dziękuję.

Edit: odpowiednie przyciski są początkowo tworzone i dodawane w viewDidLoad: dla ViewController tak:

_deleteBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(deleteRows:)]; 
_deleteBarButtonItem.tintColor = [UIColor redColor]; 

_searchBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(searchButtonClicked:)]; 

self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem]; 

A po wejściu w tryb edycji:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 

    if (self.tableView.isEditing) { 
     // turn off editing 
     _deleteBarButtonItem.enabled = NO; 
     [self.tableView setEditing:NO animated:animated]; 
     [self.editButtonItem setStyle:UIBarButtonItemStylePlain]; 
     self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem]; 
    } else { 
     // turn on editing 
     [self.tableView setEditing:YES animated:animated]; 
     [self.editButtonItem setStyle:UIBarButtonItemStyleDone]; 
     self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; 
    } 
} 
+0

W jaki sposób przyciski są dodawane do paska? – nhgrif

+0

Sprawdź moją edycję powyżej. – DemonGyro

Odpowiedz

0

poszedłem z „mniej opcji” Opcja do swoistego iPhone w trybie portretowym, bo nie mógł znaleźć właściwe rozwiązanie dla przycisku znikają i tak naprawdę nie był” t wystarczająco dużo miejsca. W Krajobraz i na iPadzie trzeci przycisk, _searchBarButtonItem ma miejsce do pokazania, więc jest wyświetlany.

Poniżej znajdują się zmiany, które wprowadziłem, aby uzyskać pożądane zachowanie. Mam nadzieję, że niektórzy ludzie uznają to za przydatne.

-(void) viewDidLoad { 
    ... 
    self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem]; 
} 

- (void) viewWillAppear:(BOOL)animated 
{  
    [super viewWillAppear:animated]; 

    if (self.playerTableView.isEditing && !IS_IPAD) 
    { 
     if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) 
     { 
      self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem]; 
     } 
     else 
     { 
      self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; 
     } 
    } 
} 

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; 

    if (self.playerTableView.isEditing && !IS_IPAD) 
    { 
     if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) 
     { 
      self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem]; 
     } 
     else 
     { 
      self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; 
     } 
    } 
} 

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 
    ...  
    if (self.playerTableView.isEditing) { 
     ... 
     self.navigationItem.rightBarButtonItems = @[_filterBarButtonItem, self.editButtonItem]; 
    } else { 
     ... 
     if (!IS_IPAD && UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) 
     { 
      self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem]; 
     } 
     else 
     { 
      self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; 
     } 
    } 
} 
1

Szczerze mówiąc, to jest ciekawy. Być może jest to właściwość tytułu, która czyni ją dominującą. Z mojego doświadczenia wynika, że ​​zawsze najlepiej jest mieć mniej opcji w "trybie edycji". Jeśli zdecydujesz się na tę trasę, oto mały kod, który może pomóc. (Naturalnie, swoje nazwy zmiennych najprawdopodobniej różnią)

// Get the reference to the current toolbar buttons 
NSMutableArray *toolbarButtons = [self.toolbarItems mutableCopy]; 

if (editing) { 
    // This is how you remove the button from the toolbar and animate it 
    [toolbarButtons removeObject:self.myButton]; 
    [self setToolbarItems:toolbarButtons animated:YES]; 
} else { 
    // This is how you add the button to the toolbar and animate it 
    if (![toolbarButtons containsObject:self.myButton]) { 
     // The following line adds the object to the end of the array. 
     // If you want to add the button somewhere else, use the `insertObject:atIndex:` 
     // method instead of the `addObject` method. 
     [toolbarButtons addObject:self.myButton]; 
     [self setToolbarItems:toolbarButtons animated:YES]; 
    } 
} 
+0

Poszedłem z opcją "mniej opcji" dla iPhone'ów w trybie portretu, ponieważ nie mogłem znaleźć odpowiedniego rozwiązania dla znikającego przycisku. Dziękuję za komentarz. – DemonGyro

Powiązane problemy