1

私はこのようなメンバーを定義します:

@property (nonatomic, retain)  NSIndexPath *deletingIndexPath; //记录当前需要删除的行

そしてそれを

- (void)tableView:(UITableView *)atableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    deletingIndexPath = indexPath;
    ...
}

そして、別のコールバック関数でそれを使用します

NSArray *deleteIndexPaths = [NSArray arrayWithObjects:deletingIndexPath,nil];
[self.tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade];

そしてそれは墜落した...

シミュレーターでそれは言う

2012-07-10 16:56:54.887 p[20972:16a03] *** Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1914.84/UITableViewSupport.m:2606
2012-07-10 16:56:54.898 p[20972:16a03] Uncaught exception: Invalid index path for use with UITableView.  Index paths passed to table view must contain exactly two indices specifying the section and row.  Please use the category on NSIndexPath in UITableView.h if possible.

誰が私に理由を教えてくれますか?

4

1 に答える 1

2

あなたはARCにいますか?そうでない場合は、インスタンスを保持する必要があります。割り当てているものは、使用する前に自動解放されます。self.deletingIndexPath = indexPath;インスタンスがプロパティによって保持されるように使用できます

于 2012-07-10T09:38:15.713 に答える