2011-02-04 17 views
1

これは奇妙です。私はiPadシミュレータでUITableViewCellをスワイプしています。以下のイベントは発生し、swipedCellはゼロではありませんが、削除ボタンは表示されません。実際には、それは現われますが、時々だけです。私は悪いアクセスやsigbartを得ることはありません。ここでUITableViewCellはスワイプされても削除ボタンは表示されません

はコードです:

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer 
{ 
    if (userListSwipeRightRecognizer.state == UIGestureRecognizerStateEnded) { 
     CGPoint swipeLocation = [userListSwipeRightRecognizer locationInView:self.outletView]; 
     NSIndexPath *swipedIndexPath = [self.outletView indexPathForRowAtPoint:swipeLocation]; 
     UITableViewCell* swipedCell = [self.outletView cellForRowAtIndexPath:swipedIndexPath]; 
     [swipedCell setEditing:YES]; 

    } 
} 

は、これはただのシミュレータの問題ですか、私が何か間違ったことをやっていますか?その後、

+0

スワイプジェスチャーを自分で処理する理由はありますか?それは、自動的にUITableViewに行うのですか? – Costique

+0

セルをスワイプしたときに、アクセサリセルに「編集」ボタンも表示します。私がやっていることは最良の方法ではないかもしれません。これは私の最初のアプリです。 – Ali

答えて

0

あなたのヘッダーであなたのUITableViewを定義した場合は、試してみてください。

swipedCell = [self.outletView cellForRowAtIndexPath:swipedIndexPath]; 
+0

私はすでにOPコードでそれをやっています。他に何かを意味しましたか、私はあなたを誤解していますか? – Ali

10

をあなたは、単にあなたのテーブルの上にスワイプ・ツー・削除を有効にする場合は、それを行うにはもっと簡単な方法があります。データソースにtableView:commitEditingStyle:forRowAtIndexPath:を実装すると、セルをスワイプするとテーブルビューに自動的に削除ボタンが表示されます。カスタムセルを使用してsetEditingをオーバーライドする場合

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 
+0

私は実際に行を削除すると思います。私はちょうど削除ボタンを表示しようとしている.... – Ali

+2

そのメソッドが定義されている場合、テーブルビューは自動的にボタンを表示します。このメソッドは、ボタンがクリックされると呼び出されます。実際にボタンを削除しない場合は、メソッド内でdeleteForRowsAtIndexPaths:を呼び出さないでください。 – ughoavgfhw

+0

素晴らしいヒント、私は最初にスワイプでボタンを表示しようとしていましたが、まだアクションを「コミット」する必要はないと思っていましたが、単に空のメソッドを実装するだけでスワイプの作業ができます – kuba

-1

、あなたはスーパーメソッドを呼び出す必要がありますか、あなたの削除コントロールが描画されません。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 
} 
関連する問題