2009-10-30 26 views
7

Pracuję nad widokiem iPhone'a, który składa się z 3 elementów, UITextView, UIToolBar z UIBarButtonItem.Jak zmienić typ UIBarButtonItem w UINaviagationBar w czasie wykonywania?

Celem jest, chcę, aby UIBarButtonItem zmienił swój styl z "edit" (UIBarButtonSystemItemEdit) na "Gotowe" (UIBarButtonSystemItemDone) i zaktualizował nowy selektor do nowej metody.

Przede wszystkim starałem następujący kod, ale nie działa:

mógłbyś mi pomóc na ten pomysł?

Odpowiedz

14

Jest wbudowany przycisk paska z tym zachowaniem, otrzymujesz go za pośrednictwem właściwości editButtonItem UIViewContoller. Przyciśnięcie tego przycisku spowoduje zmianę kontrolera widoku, z którego wszedł do trybu edycji, i przełączenie przycisku na gotowy przycisk.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 
+0

dziękuję bardzo! najlepsza odpowiedź z prawdziwym rozwiązaniem dla wszystkich podobnych pytań! – itinance

4

zmienić przycisk przycisk Done użyć tej

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone]; 

zmienić przycisk Edycja przycisk skorzystać z tej

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered]; 
5

Jeśli dodałeś przycisk przez IB następnie upewnij się, ustawić identyfikator na Niestandardowy Przydziel również przycisk w .h odpowiednim IBOutlet i właściwości Syntetyzuj przycisk w .m

Następnie w kodzie należy wykonać następujące czynności:

// Set to done 
editButton.style = UIBarButtonItemStyleDone; 
editButton.title = @"Done"; 

// Set back to edit 
editButton.style = UIBarButtonItemStyleBordered; 
editButton.title = @"Edit"; 
2

skończyło się robi coś takiego. Niestety, ustawienie tytułu bezpośrednio nie działało, z jakiegoś powodu było zerowe i nie pozwalało mi ustawić go na inną wartość. Self.editButton pochodzi z IBOutlet z ustawionym celem i działaniem. Ten kod używa ARC. Mam nadzieję, że to pomoże komuś.

 NSString *title = app.settings.editing 
         ? NSLocalizedString(@"Done", @"") 
         : NSLocalizedString(@"Edit", @""); 

     UIBarButtonItemStyle style = app.settings.editing 
            ? UIBarButtonItemStyleDone 
            : UIBarButtonItemStyleBordered; 

     UIBarButtonItem *editButton 
      = [[UIBarButtonItem alloc] initWithTitle:title 
               style:style 
               target:self.editButton.target 
               action:self.editButton.action]; 

     self.navigationItem.rightBarButtonItem = editButton; 
Powiązane problemy