1

防止またはハイジャックする方法を見つけようとしていますdidSelectRowAtIndexPath:。ユーザーがテーブルビューの行を選択すると、最初に「これを行うとCDからデータが削除されます」というアラートビューがスローされます。「続行する場合は、データをサーバーに同期します。」

ユーザーは [はい] をクリックして続行します。同期が完了するまで新しいセルが選択されないようにしたい。同期が失敗した場合は、失敗したことをユーザーに通知するアラートをポップしてから、起動を停止して、ユーザーがdidSelectRowAtIndexPath:触れた新しいセルが選択されないようにしたいと考えています。

同期が成功した場合は、私didSelectRowAtIndexPath:が呼び出されます。

ハイジャックするのが最善の方法でしょうwillSelectRowAtIndexPath:か?

4

2 に答える 2

5

デリゲートメソッドを実装する

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

nil関連するindexPathに戻ります

これにより、関連するセルの選択が停止します。

のドキュメントからUITableViewDelegate

戻り値選択した行を確認または変更するインデックスパスオブジェクト。別のセルを選択する場合は、indexPath以外のNSIndexPathオブジェクトを返します。行を選択したくない場合はnilを返します。

于 2012-06-20T18:05:10.237 に答える
0

とった。

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {

UITableView *roomTable = tableView;
Rooms *room = [roomArray objectAtIndex:indexPath.row];
NSString *message = [NSString stringWithFormat:@"Switching rooms will remove data for current thing. Need to download %@ room", room.name];
[UIActionSheet actionSheetWithTitle:message 
                            message:@"Message" 
             destructiveButtonTitle:@"Continue" 
                            buttons:[NSArray arrayWithObjects:nil]
                         showInView:self.view 
                          onDismiss:^(int buttonIndex)
 {
     NSLog(@"User selected to change the room");
     [roomTable selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
 }
                           onCancel:^
 {
     NSLog(@"Change Room Cancelled");
 }];

return nil;   
}
于 2012-06-20T21:48:36.877 に答える