2011-08-03 13 views
1

テーブルビューに「スワイプして削除」する可能性を追加したいのですが、テーブルの最後のセルにはこれをしたくありません!「スワイプして削除」を追加しますが、すべてのセルでは使用しません

indexPath.rowが最後のものである場合、私は- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPathをチェックできますが、最後のセルでスワイプした場合、何も表示されません(他のセルでは「削除」というテキストが表示されます)。 。

私はこの

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{ 
if (indexPath.row != ([array count]-1)) { 
    return @"delete"; 
} 
else { 
    NSString *a; 
    return a; 
    } 
} 

を試してみたけど、もちろんそれは作品(アプリのクラッシュ)しません。 私は

return @""; 

で試してみたが、赤いボタンが(テキストなしで)表示されます!

私に何をお勧めしますか? ありがとう!

+0

あなたの 'else'では' nil'を返そうとしましたか?今、あなたのクラッシュの原因となっている初期化されていないポインタを返しています。 – highlycaffeinated

+0

がnilの場合、アプリケーションはクラッシュしませんが、結果は同じです(「削除」と表示されます) – JAA

答えて

3

あなたが初期化されていないポインタを返すので、

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if ([indexPath row] == [tableView numberOfRowsInSection:[indexPath section]] - 1) 
    { 
     return UITableViewCellEditingStyleNone; 
    } 

    return UITableViewCellEditingStyleDelete; 
} 
+0

閉じるが見つかりませんでした:あなたが引用しているメソッドには 'void'戻り値の型がありますが、 。おそらく 'tableView:editingStyleForRowAtIndexPath:'を意味します。 – DarkDust

+0

はい、間違いを見て修正しました。ありがとうございました。 –

+0

素晴らしい、これは動作します!ありがとう! – JAA

3

アプリがクラッシュしてみてください。しかしそれでも間違っているのです;-)

tableView:editingStyleForRowAtIndexPath:を実装して、最後のものを除いてすべてのセルにUITableViewCellEditingStyleDeleteを返します。最後のセルが削除されないようにするには、UITableViewCellEditingStyleNoneを返す必要があります。