我有一個包含多個單元格的表格視圖。當我添加一個新的單元格(使用模態視圖控制器)時,我想向用戶顯示新添加的單元格。要做到這一點,我想滾動表格視圖到新的單元格,選擇它並立即取消選擇它。將表格視圖滾動到單元格,然後刷單元格
現在,我在固定的時間間隔後發送deselectRowAtIndexPath
我的表視圖:
- (IBAction)selectRow
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:7 inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
[self performSelector:@selector(deselectRow:) withObject:indexPath afterDelay:1.0f];
}
- (void)deselectRow:(NSIndexPath *)indexPath
{
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
我不知道是否有這樣做一個更好的方式。它運行良好,但我不喜歡依靠靜態定時器來執行有時會花費不同時間的操作(例如,如果表非常長)。
編輯:請注意,selectRowAtIndexPath:animated:scrollPosition
不會導致UITableView
委託方法被激發。 tableView:didSelectRowAtIndexPath:
和scrollViewDidEndDecelerating:
都不會被調用。從文檔:
調用此方法不會導致委託接收
tableView:willSelectRowAtIndexPath:
或tableView:didSelectRowAtIndexPath:
消息,也不會發送UITableViewSelectionDidChangeNotification
通知觀察員。
感謝GCD的版本。不幸的是,滾動視圖委託不會被通知,因爲滾動不是用戶啓動的。我實現它來檢查,但只有當我手動滾動表時調用它。 –
您可以實現'scrollViewDidScroll:'並檢查'contentOffset.y'來查看單元格是否可見。 –