2

Apple のドキュメントは、「編集/完了」ボタンで編集可能な UITableView の場合、ボタンを切り替えるたびにボタンを作成して破棄する必要があることを暗示しています。

これを行うコード「BonjourWeb」サンプル コード プロジェクトのスニペットを次に示します。

if (editing) {
    // Add the "done" button to the navigation bar
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
                                   initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneAction:)];

    self.navigationItem.leftBarButtonItem = doneButton;
    [doneButton release];

    [self addAddButton:YES];
} else {
    if ([self.customs count]) {
        // Add the "edit" button to the navigation bar
        UIBarButtonItem *editButton = [[UIBarButtonItem alloc]
                                       initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editAction:)];

        self.navigationItem.leftBarButtonItem = editButton;
        [editButton release];
    }

これは、ボタンのタイトルを編集するよりも本当に優れていますか? 表示されていないパフォーマンスの最適化はありますか? それとも、これは悪い例のソースですか?

4

2 に答える 2

2

そのコード サンプルでなぜそれを行うのかはわかりませんが、任意の種類のビュー コントローラー (SDK 2.0 以降で利用可能) に編集/完了ボタンを追加するはるかに簡単な方法があります。UIViewController には独自の編集ボタン項目が付属しているため、次のようにするだけです。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationItem.leftBarButtonItem = self.editButtonItem;
}

編集ボタンは、View Controller の編集モードへの移行と編集モードからの移行を処理し、それに応じてボタン スタイルを更新します。

于 2010-07-15T18:56:38.537 に答える
1

Apple によって行われた複数のdefaultがあります。 UIBarButtonSystemItemUIBarButtonItemと呼ばれるこれらの既定のボタンを使用すると、ユーザーは、これらを使用するすべてのアプリでこのボタンが実行するアクションを識別できます。Apple では、HIG に従ってこれらのデフォルト ボタンを使用する必要があります。 したがって、答えは次のようになります。ボタンのタイトルを変更することは、デフォルトの「完了」および「編集」ボタンを使用することと同じではありません。これらは外観が異なります (たとえば、「完了」ボタンは水色を使用しています)。

于 2010-03-16T09:37:30.853 に答える