我正在使用UIBarButtonItem組成3個元素,UITextView,UIToolBar的iPhone視圖。我想讓UIBarButtonItem從'edit'(UIBarButtonSystemItemEdit)更改它的樣式爲'Done'(UIBarButtonSystemItemDone),並將新的選擇器更新爲新的方法。如何在運行時更改UINaviagationBar中的UIBarButtonItem類型?
首先,我曾嘗試下面的代碼,但它不工作:
你能幫我這個想法?
我正在使用UIBarButtonItem組成3個元素,UITextView,UIToolBar的iPhone視圖。我想讓UIBarButtonItem從'edit'(UIBarButtonSystemItemEdit)更改它的樣式爲'Done'(UIBarButtonSystemItemDone),並將新的選擇器更新爲新的方法。如何在運行時更改UINaviagationBar中的UIBarButtonItem類型?
首先,我曾嘗試下面的代碼,但它不工作:
你能幫我這個想法?
沒有與此行爲的內置欄按鈕,您通過UIViewContoller的editButtonItem
財產得到它。選中該按鈕將會將其來自的視圖控制器更改爲編輯模式,並將按鈕切換爲完成按鈕。
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
更改按鈕完成按鈕使用此
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];
更改按鈕編輯按鈕使用此
[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered];
如果您已經通過IB添加的按鈕,然後確保將標識符設置爲自定義 同時在合適的IBOutlet和屬性中分配.h中的按鈕 合成.m中的按鈕
然後在你的代碼執行以下操作:
// Set to done
editButton.style = UIBarButtonItemStyleDone;
editButton.title = @"Done";
// Set back to edit
editButton.style = UIBarButtonItemStyleBordered;
editButton.title = @"Edit";
最後我做這樣的事情。不幸的是,直接設置標題不起作用,由於某種原因,它是零,不會讓我把它設置爲不同的值。 self.editButton來自一個IBOutlet,其目標和操作均已設置。此代碼使用ARC。我希望這可以幫助別人。
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;
非常感謝你!最好的答案與所有類似問題的真正解決方案! – itinance 2014-04-23 20:10:11