2

喜歡在蘋果筆記應用程序中生成,在您滑動刪除選定的行後,它會自動選擇最近的可用行。UITableView - 在行刪除後選擇最近的行

邏輯應該是:

如果行計數> 0,那麼如果 == deleted_row最後一行然後
選擇deleted_row_index-1行
別的
選擇deleted_row_index + 1行

end

我已嘗試實施ab在commitEditingStyle事件中,但選擇失敗。
selectRowAtIndexPath邏輯在這個事件中不起作用,如果我將它應用在按鈕中,它就可以工作。

有什麼想法嗎?

回答

3

解決此問題的一種方法是使用方法performSelector:withObject:afterDelay:

tableView:commitEditingStyle:forRowAtIndexPath:你可以在:

NSIndexPath *indexPathToSelect = ... 
[self performSelector:@selector(selectRowAtIndexPath:) 
      withObject:indexPathToSelect 
       afterDelay:0]; 

然後在您的視圖控制器

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [self.tableView selectRowAtIndexPath:indexPath 
           animated:YES 
         scrollPosition:UITableViewScrollPositionTop]; 
} 
+0

感謝羅伯特定義selectRowAtIndexPath:方法!你的解決方案如此簡單和優雅! – sunnycmf 2011-09-04 08:20:42

0

當你刪除一行時,你應該有它的indexPath。然後調用方法

(void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

對於indexPath可以設置新indexPath,通過增加或1

的scrollPosition降低indexPath.row設置的tableView向上或向下滾動是否和動畫應該清楚。

畢竟,您手動選擇該UITableViewCell。

[cell setSelected:YES];