2011-06-10 28 views
0

私はUITableViewControllerを使用して、編集モードボタン(通常のデフォルトは 'Delete')をカスタムビューで置き換えようとしています。editingAccessoryViewが表示されませんか?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ... (other code) ... 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    cell.tag = pd.itemId; 
    UIImage *indicatorImage = [UIImage imageNamed:@"indicator.png"]; 
    cell.editingAccessoryView = [[[UIImageView alloc] initWithImage:indicatorImage] autorelease]; 
    //cell.accessoryView = [[[UIImageView alloc] initWithImage:indicatorImage] autorelease]; 
    return cell; 
} 

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    return NO; 
} 

スワイプしようとすると何も起こりません。奇妙なのは、cell.accessoryView行のコメントを外すと、イメージが正常に表示されるということです。これは間違っている編集設定について何か考えているのですか?しかし、どこの場所であれ、オンラインやドキュメンテーションのどこにもその設定があるはずがありません。

ありがとうございます!

更新: Ah。大丈夫なので、私は自分自身にUITableView navコントローラ用の「編集」ボタンを与えました。すべてのセルを編集モードに切り替えると、アクセサリが表示されます。それで、細胞は何をスワイプしますか?あなたがeditingAccessoryViewを設定し、それを表示させたい場合は

クルト

答えて

0
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    return YES; 
} 

canEditRowAtIndexPathはYESを返す必要があります。テーブルが編集モードではない間、通常のアクセサリビューが表示されます。しかし、セルのスワイプはeditingAccessoryViewではありません削除の確認ボタンを示しており、[スーパーwillTransitionToState:状態]呼び出さず

- (void)willTransitionToState:(UITableViewCellStateMask)state; 

をいじり。予期しない動作につながります(セルがUITableViewCellStateShowingDeleteConfirmationMaskステートから離れることはありません)。あなたがスーパーを呼び出すことを管理でき、セルに削除確認ボタンが表示されない場合は、完了です。

+0

noをyesに変更してもスワイプが有効になりませんでした。 UITableViewCellをサブクラス化してwillTransitionToStateをオーバーライドする必要があると言っていますか?それは私がUITableViewCellの標準フィールドを使用していることを考えると、不必要なようです。 –

+0

また、willTransitionToStateのドキュメントを読んで追加してみると、 'show delete button state'が 'editing'状態と異なっているようです。誰かがそれについて詳しく説明できますか?私は、削除ボタンを表示するだけの標準の編集状態だと思った。 –

+0

try tableView.editing = YES;実際の編集状態(左側の丸いボタンを削除し、通常は右揃えのコントロールを並べ替える)を確認するには、スワイプが異なる... – tsakoyan

関連する問題