2012-09-04 258 views
10

我想創建一個可以編輯的項目列表。事情是這樣的:如何更改NavigationBar上BarButtonItem的文本?

enter image description here

爲此,我添加了一個導航欄到視圖的頂部,然後加入了XCode設計師2個欄按鈕項目。我將左側按鈕的標識符設置爲「添加」,右側的「編輯」按鈕。

當我單擊編輯時,我想將文本更改爲完成。我嘗試了各種方法,例如btnEdit.Title = "Done",但它根本不需要。

我見過幾篇推薦.SetTitle的博客文章,但UIButtonBarItem沒有這個方法(至少在MonoTouch中)。

那麼,我該如何更改編輯按鈕的標題?

回答

14

我解決了它。關鍵是我將編輯按鈕的標識符設置爲系統值(例如UIBarButtonSystemItemEdit),並且不能更改這些文本(現在有意義)。我將標識符更改回自定義和設置。標題工作正常。從欄按鈕

+0

真的很有幫助。謝謝:) –

+0

Godddd我被困在這個尷尬的很長時間..謝謝! – 2017-09-01 21:02:10

4

適用於我這樣的作爲UIBarButtonItem * btnEdit;在.h中是班級記憶;

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

現在選擇所謂的將是:

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

你爲什麼不嘗試改變navigationItem.rightbarButtonItem財產?

設置兩個按鈕,一個用於編輯,一個用於完成

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.並在必要時,在editAction preferrably改變rightBarButtonItem,如:

self.navigationItem.rightBarButtonItem=doneButton; 

如果您需要editButton返回

self.navigationItem.rightBarButtonItem=editButton; 
+0

一旦改變'rightBarButtonItem',出於某種原因,連接到兩個按鈕動作不工作。 –

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

希望這會有所幫助。快樂編碼:)

+3

不能使用==比較字符串。您應該使用isEqu alToString:取而代之。 – rdelmar

+0

如果有幫助請接受答案,以指導其他有同樣問題的人。謝謝。 –

1

控件拖動到文件(使用助理編輯),創建出口(在這種情況下,它被稱爲 「barButton」 然後,補充一點:

雨燕3.0:

self.barButton.title = "New title" 
0

回覆 - 新的按鈕,如下圖所示。

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