deselectRowAtIndexPath和cell setSelected有什么区别?

时间:2015-07-01 13:46:22

标签: ios objective-c iphone uitableview

之间有什么区别
[tableView deselectRowAtIndexPath:indexPath animated:NO];

 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexpath];
 [cell setSelected:NO];

???

3 个答案:

答案 0 :(得分:3)

在UITableView中,单元格与特定的数据不匹配。它可以(并且应该在大多数情况下)重复使用,并且在不可见时为零。

deselectRowAtIndexPath会将indexPath设置为“未选择”#39;在你的tableview中,所以当你来回滚动到那个单元格时,它将保持未被选中状态,因为你告诉你的tableview,无论你在indexPath上显示什么单元格,都应该取消选择它。

使用UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexpath]; [cell setSelected:NO];将单元格设置为未选中。但是,该单元格可用于其他数据,如果未显示此indexPath,它甚至可以为nil。

答案 1 :(得分:2)

第一个是以编程方式取消选择单元格。因此,如果用户已经选择了单元格,它将取消突出显示单元格。

至于第二位代码,我认为这只是表视图中某个单元格的指针或引用。您可以使用此代码编辑任何表视图委托方法的单元格OUTSIDE。因此,如果您想在一个单元格上编辑/更新标签,而是使用随机方法(而不是表格视图委托方法),那么您可以使用该代码来引用标签文本属性。

我认为您还应该查看Apple Developer Library网站。它详细解释了所有不同的表视图方法/属性/等:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/

答案 2 :(得分:0)

“选定”的概念对于tableview和单元格是不同的。 tableview可以选择一行或多行来更改tableview的状态,但更改tableview cell selected状态只会影响其外观而不影响其他内容。