2012-09-04 5 views
10

Sto provando a creare un elenco di elementi che possono essere modificati. Qualcosa di simile a questo:Come modificare il testo di un oggetto BarButtonItem sulla barra di navigazione?

enter image description here

A tal fine, ho aggiunto un NavigationBar alla parte superiore della vista, ha poi aggiunto 2 barra dei pulsanti I prodotti in XCode designer. Ho impostato l'identificatore per il pulsante a sinistra su Aggiungi, per il pulsante a destra su Modifica.

Quando faccio clic su Modifica, desidero modificare il testo in Fine. Ho provato vari modi, ad es. btnEdit.Title = "Done", ma semplicemente non ci vuole.

Ho visto diversi post di blog che raccomandano .SetTitle, ma UIButtonBarItem non ha quel metodo (almeno in MonoTouch).

Quindi, come posso modificare il titolo del pulsante Modifica?

risposta

14

Ho risolto. La chiave era che stavo impostando l'identificatore del pulsante Modifica su un valore di sistema (ad esempio UIBarButtonSystemItemEdit) e non è possibile modificare il testo di quelli (ha senso ora). Ho cambiato l'identificatore di nuovo in Personalizzato e impostazione. Il titolo ha funzionato bene. .

+0

Davvero utile.Grazie :) –

+0

Godddd Sono stato bloccato su questo per un tempo imbarazzante .. Grazie !! –

4

Funziona per me in questo modo come UIBarButtonItem * btnEdit; è memember di classe in .h;

btnEdit = [[UIBarButtonItem alloc]initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(btnEditClicked)]; 
self.navigationItem.leftBarButtonItem = btnEdit; 
//[btnEdit release]; 

Ora selettore chiamato sarebbe:

-(void)btnEditClicked 
{ 
    if([btnEdit.title isEqualToString:@"Edit"]) 
    { 
    [btnEdit setTitle:@"Done"]; 
    } 
    else 
    { 
    [btnEdit setTitle:@"Edit"]; 
    } 
} 
8

Perché non provare a cambiare la proprietà navigationItem.rightbarButtonItem?

1. istituito due pulsanti, uno per la modifica e l'altra per fatto

UIBarButtonItem*editButton=[[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(editAction)]; 

UIBarButtonItem*doneButton=[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneAction)]; 

2. E ove necessario, in editAction preferibilmente cambiare il rightBarButtonItem come:

self.navigationItem.rightBarButtonItem=doneButton; 

E se hai bisogno dello editButton indietro

self.navigationItem.rightBarButtonItem=editButton; 
+0

Su cambiare 'rightBarButtonItem', per qualche motivo, le azioni collegate a entrambi i pulsanti non funzionano. –

5
if ([self.navigationItem.rightBarButtonItem.title isEqualToString:@"Edit"]) 
{ 
    self.navigationItem.rightBarButtonItem.title= @"Done"; 
} 

spero che questo aiuti. felice codifica :)

+3

non è possibile utilizzare == per confrontare le stringhe. si dovrebbe usare isEqu alToString: invece. – rdelmar

+0

si prega di accettare la risposta se ha aiutato, in modo da guidare gli altri che hanno lo stesso problema. Grazie. –

1

controllo di trascinamento dal pulsante della barra su file (usando assistente al montaggio), creare uscita (in questo caso, la sua chiamata "barButton" Allora, aggiungere questo:

Swift 3.0:

self.barButton.title = "New title" 
0

Re -Nuovo il pulsante mi piace qui sotto..

self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "title", style: UIBarButtonItemStyle.plain, target: self, action: #selector(actionMethod))