2012-06-20 47 views
1

我正試圖找到一種方法來預防或闖入didSelectRowAtIndexPath:。當用戶在tableview中選擇一行時,我想首先拋出一個alertview,說「如果你這樣做,數據將從CD中刪除」。 「如果你繼續,我們將把數據同步到服務器」。劫掠或阻止UITableView didSelectRowAtIndexPath

用戶單擊是繼續。我想阻止在同步完成之前選擇新單元。如果同步失敗,我想彈出告訴告訴用戶失敗的告警,然後停止發射didSelectRowAtIndexPath:,從而防止他們觸摸的新單元被選中。

如果同步成功,我希望didSelectRowAtIndexPath:被調用。

最好的方法是high 012 willSelectRowAtIndexPath:

回答

5

實現委託方法

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

和相關indexPath

這將停止相關的細胞中選擇返回nil

從文檔爲UITableViewDelegate

返回值,確認或改變所選擇的行 索引路徑中的物體。如果您想要選擇另一個單元格 ,則返回indexPath以外的NSIndexPath對象。如果您不希望選擇行 ,則返回零。

+0

這可以防止它,但如何繼續選擇。我假設只是手動調用didSelectRowAtIndexPath與他們選擇的索引(我會堅持從willSelectRow ..)? – jdog

+0

如果你想單元格被視覺選擇,你將不得不保持一個指針,並調用[cell setSelected:YES animated:YES]; – Taum

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; 
} 
相關問題