2012-09-04 18 views
10

Próbuję utworzyć listę elementów, które można edytować. Coś takiego:Jak zmienić tekst BarButtonItem na pasku nawigacyjnym?

enter image description here

W tym celu dodałem NavigationBar do górnej części widoku, a następnie dodano 2 pasek przycisków Produkty w projektanta XCode. Ustawiam identyfikator przycisku po lewej stronie, aby dodać, dla przycisku po prawej stronie, aby edytować.

Po kliknięciu przycisku Edytuj chcę zmienić tekst na Gotowe. Próbowałem na różne sposoby, np. btnEdit.Title = "Done", ale po prostu nie bierze.

Widziałem kilka wpisów na blogu polecających .SetTitle, ale UIButtonBarItem nie ma tej metody (przynajmniej w MonoTouch).

Jak mogę zmienić tytuł przycisku Edytuj?

Odpowiedz

14

Rozwiązałem to. Kluczem było ustawienie identyfikatora przycisku Edit na wartość systemową (np. UIBarButtonSystemItemEdit) i nie można zmienić tekstu tych znaków (ma to sens teraz). Zmieniłem identyfikator z powrotem na Niestandardowy i ustawienie. Title działało bez zarzutu. .

+0

Naprawdę pomocne.Dzięki :) –

+0

Godddd utknąłem na tym przez żenująco długi czas .. Dzięki! –

4

Działa dla mnie tak jak UIBarButtonItem * btnEdit; jest członkiem klasy w .h;

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

Teraz Selector nazywa byłoby:

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

Dlaczego nie spróbować zmienić właściwość navigationItem.rightbarButtonItem?

1. Skonfiguruj dwa przyciski, jeden do edycji i jeden dla wykonanej

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. i gdzie to konieczne, editAction preferrably zmienić rightBarButtonItem jak:

self.navigationItem.rightBarButtonItem=doneButton; 

A jeśli potrzebujesz editButton ponownie

self.navigationItem.rightBarButtonItem=editButton; 
+0

po zmianie 'rightBarButtonItem', z jakiegoś powodu, działania związane zarówno przyciski nie działają. –

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

mam nadzieję, że to pomoże. szczęśliwe kodowanie :)

+3

nie można używać == do porównywania ciągów znaków. należy użyć isEqu alToString: zamiast tego. – rdelmar

+0

proszę przyjąć odpowiedź, jeśli pomogło, aby pomóc innym, którzy mają ten sam problem. Dzięki. –

1

Kontrola przeciągnij z przycisku paska do pliku (przy użyciu edytora Assistant), tworzyć wylot (w tym przypadku, jego nazwie "barButton" Następnie dodaj to:

Swift 3.0:

self.barButton.title = "New title" 
0

Re -Nowy przycisk jak poniżej..

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