Nitinの答えに基づいて、組み込みのUIButtonBar
システムアイテムを使用する少し異なるアプローチを提案します。
これにより、UIにシステムのルックアンドフィールが与えられます。たとえば、編集を停止するための標準の[完了]ボタンは、iOS8で特定の大胆な外観にする必要があります。Appleは将来これらのスタイルを変更する可能性があります。システム定義のボタンを使用することにより、アプリは現在の美的感覚を自動的に取得します。
このアプローチは、無料の文字列ローカリゼーションも提供します。Appleはすでに、システムボタンのタイトルをiOSがサポートする数十の言語に翻訳しています。
これが私が持っているコードです:
-(IBAction) toggleEditing:(id)sender
{
[self setEditing: !self.editing animated: YES];
}
-(void) setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing: editing animated: animated];
const UIBarButtonSystemItem systemItem =
editing ?
UIBarButtonSystemItemDone :
UIBarButtonSystemItemEdit;
UIBarButtonItem *const newButton =
[[UIBarButtonItem alloc]
initWithBarButtonSystemItem: systemItem
target: self
action: @selector(toggleEditing:)];
[self.navigationItem setRightBarButtonItems: @[newButton] animated: YES];
}
ここでの例は、UIViewController
がでホストされてUINavigationController
おり、UINavigationItem
インスタンスがある場合です。これを行わない場合は、適切な方法でバーアイテムを更新する必要があります。
次の呼び出しをviewDidLoad
使用して、編集ボタンを使用できるように構成します。
[self setEditing: NO animated: NO];