以编程方式选择表视图单元格:selectRowAtIndexPath vs setSelected

时间:2013-02-17 10:57:26

标签: ios objective-c cocoa-touch uitableview

我经常需要将表格视图单元格设置为初始选择状态,我使用以下代码:

[self.tableView selectRowAtIndexPath:indexPath 
   animated:NO scrollPosition:UITableViewScrollPositionNone];
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:YES];
cell.accessoryType = UITableViewCellAccessoryCheckmark;

我同时使用selectRowAtIndexPath:indexPathsetSelected:YES,因为我不完全了解这两种方式中哪一种是以编程方式选择单元格的首选方式。

我应该使用哪一个陈述以及为什么?

2 个答案:

答案 0 :(得分:7)

我相信您要使用的方法是selectRowAtIndexPath:animated:scrollPosition:。通常,您应该将单元状态管理保留在表视图中。在选择的情况下,它存储并维护一组选定的索引路径,因此在为其重用不同的单元后,将保持选择正确的行。也没有必要调用这两种方法,它只是多余的。

答案 1 :(得分:0)

就我而言

let indexPath = IndexPath(item: viewModel.item, section: viewModel.section)

self.categoryCollectionView.selectItem(at: indexPath, animated: true, scrollPosition: UICollectionView.ScrollPosition.centeredHorizontally)

if let cell = self.categoryCollectionView.dequeueReusableCell(withReuseIdentifier: SubcategoryCollectionViewCell.identifier, for: indexPath) as? SubcategoryCollectionViewCell {
    //...//
}