2013-11-04 8 views
5

Im Hochformat-Modus des iPhone-Simulators oder in Querformat auf dem Gerät werden alle Schaltflächen der Navigationsleiste angezeigt. Bei Verwendung des Hochformat-Modus auf dem Gerät ist dies nicht möglich angezeigt. Im Folgenden finden Sie Bilder der Navigationsleisten.iPhone-Navigationsleiste zeigt nicht alle Schaltflächen auf Gerät

Simulator shows button

Device doesn't show button

Das Gerät zum Testen I haben, ist ein iPhone 4S IOS 6.1.3 (10B329) ausgeführt wird. Der verwendete Simulator ist Version 7.0 (463.9.4) mit iOS 6.0/6.1.

Ich überlege, die Schaltfläche Suchen im Bearbeitungsmodus zu entfernen, aber ich würde diese Option dem Benutzer unabhängig vom Modus lieber zur Verfügung stellen.

Jede Hilfe oder Einsicht ist dankbar, danke.

Edit: Die richtigen Tasten zunächst erstellt werden und in viewDidLoad: für die Viewcontroller hinzugefügt wie so:

_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]; 

Und wenn Editier-Modus eingeben:

- (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

Wie werden die Tasten an der Bar hinzugefügt? – nhgrif

+0

Überprüfen Sie meine Bearbeitung oben. – DemonGyro

Antwort

0

Ich ging mit den „weniger Optionen“ Option für speziell iPhones im Hochformat-Modus, weil ich keine richtige Lösung für die verschwindenden Taste und es war wirklich nicht finden konnte‘ t genug Platz. In Landscape und auf iPad hat die dritte Taste, _searchBarButtonItem, Platz zum Anzeigen, so dass sie angezeigt wird.

Im Folgenden sind die Änderungen, die ich vorgenommen habe, um das gewünschte Verhalten zu erhalten. Ich hoffe, einige Leute können das nützlich finden.

-(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

Ehrlich gesagt, das ist neugierig. Vielleicht ist es eine Eigenschaft des Titels, die ihn dominant macht. Nach meiner Erfahrung ist es immer am besten, während des "Bearbeitungsmodus" weniger Optionen zu haben. Wenn Sie sich für diese Route entscheiden, ist hier ein kleiner Code hilfreich. (Natürlich, Ihre Variablennamen höchstwahrscheinlich abweichen)

// 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

Ich ging mit der Option "weniger Optionen" für bestimmte iPhones im Hochformat-Modus, weil ich keine passende Lösung für den verschwindenen Knopf finden konnte. Danke für den Kommentar. – DemonGyro