-1

テーブルビューコントローラの編集モードで追加の動作を課すにはどうすればよいですか。電話アプリケーションの[最近]セクションのように、[編集]を押すと左側に[クリア]ボタンが表示される動作を実装したいと思います。これどうやってするの?

viewDidLoadで私は持っています

self.navigationItem.rightBarButtonItem = self.editButtonItem;

したがって、[編集]ボタンを押すと、削除機能を提供する赤い円が表示され、正常に機能します。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

が自動的に呼び出されるため、テーブルビューと基になるデータが更新されます。それらはすべて正常に動作します。しかし、viewDidLoadのコンテンツを次のように変更すると

self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.navigationItem.rightBarButtonItem.action = @selector(editPressed:); 

実装します

- (IBAction)editPressed:(UIButton *)sender
{
    NSLog(@"In Edit Pressed");
}

[編集]ボタンを押すと、editPressed:に移動しますが、テーブルビューの[編集]の通常の動作が失われます。

4

1 に答える 1

1

デフォルトのViewController編集ボタンを使用する場合、のメソッド- (void)setEditing:(BOOL)editing animated:(BOOL)animatedをオーバーライドできますUITableViewController。したがって、このメソッドにコードを入れることができますsuper。したがって、コードは次のようになります。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];

    if (myTable.editing)
        self.navigationItem.leftBarButtonItem = additionalButtonItem;
    else
        self.navigationItem.leftBarButtonItem = nil;
}
于 2012-06-17T04:13:15.163 に答える