2

その中にUITableViewカスタムセルがいくつかあります。これらのカスタム セルUILongPressGestureRecognizerで、このテーブルの編集モードをトリガーする を定義しました。したがって、誰かがセルを 1.5 秒ほど押し続けると、テーブルは編集モードになります。

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(startEditMode:)];

どのトリガー:

- (void)startEditMode:(UISwipeGestureRecognizer *)recognizer {

    if (self.allowEdit) {
        UITableView *table = (UITableView *)self.superview;
        [table setEditing:YES animated:YES];
    }

}

しかし、私がやりたいのは、この場合、いくつかの追加ボタンを表示/非表示にする必要があるため、テーブルが編集モードになったことを検出することです。しかし、私のviewcontrollerでは何らかの理由でこれは決して実行されません:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    NSLog(@"SET EDITING");
    [super setEditing:editing animated:animated];
}

なぜ何か提案はありますか?これは、UINavigationController でデフォルトで提供されている適切な編集ボタンを使用するときに呼び出されるだけですか?

または、UITableView が編集モードになったことをどのように検出できますか?

4

2 に答える 2

4

メッセージ(setEditing)をテーブルビューに送信しています。ビューコントローラー(おそらくUITableViewControllerサブクラス?)に送信する必要があります。次に、テーブルビューを処理します。

于 2012-02-05T14:30:05.513 に答える
1

わかりましたので、他の誰かが同じ問題でこのスレッドに足を踏み入れた場合に備えて、私がこれをどのように解決したかを示します.

私のカスタムUITableViewCellでは、この方法があります:

- (void)startEditMode:(UISwipeGestureRecognizer *)recognizer {

    if (self.allowEdit) {
        UITableView *table = (UITableView *)self.superview;
        UITableViewController *control = (UITableViewController *)table.dataSource;
        [control setEditing:YES animated:YES];
    }

}
于 2012-02-05T15:52:32.133 に答える