Ram*_*sel 21 cocoa-touch objective-c uitableview
这真让我抓狂.我在这里看过SO,因为我认为这是一个简单的答案,但找不到一个.
在我的自定义中UITableViewCell:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
// Configure the view for the selected state
if (selected) {
[self.languageLevelNameLabel setTextColor:[UIColor blackColor]];
}
else {
[self.languageLevelNameLabel setTextColor:[UIColor colorMessageCountZero]];
}
[self setNeedsDisplay];
}
Run Code Online (Sandbox Code Playgroud)
在tableView:cellForRowAtIndexPath:控制器中:
if ([level integerValue] == indexPath.row) {
[cell setSelected:YES];
}
Run Code Online (Sandbox Code Playgroud)
我已插入断点并selected == YES正在传递正确的单元格,并且if语句正在执行时应该是,但文本永远不会被设置为blackColor.
Dre*_*w C 63
要使单元格显示为已选中,您必须-setSelected:animated:从内部调用,-tableView:willDisplayCell:forRowAtIndexPath:如下所示:
目标C:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (/* should be selected */) {
[cell setSelected:YES animated:NO];
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; // required, as noted below
}
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特3:
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if (/* should be selected */) {
cell.setSelected(true, animated: false)
tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none) // required, as noted below
}
}
Run Code Online (Sandbox Code Playgroud)
-setSelected从其他任何地方打电话都没有效果.
为什么?在初始化或出列单元格之后,但在显示单元格之前,表格视图会调用一个名为的私有方法,该方法-_configureCellForDisplay:forIndexPath:将单元格的selected属性设置为NO.willDisplayCell:forRowAtIndexPath:在此之后调用委托,让您设置显示所需的任何内容.
Fra*_*tin 48
如果要将单元格设置为选中selectRowAtIndexPath:animated:scrollPosition:,请在表格视图的cellForRowAtIndexPath方法中使用此方法
Objective-C的
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
Run Code Online (Sandbox Code Playgroud)
迅速4
tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18598 次 |
| 最近记录: |