我有一个带有UITableView的屏幕,每个可用的数据元素显示一行,数据元素的数量可以成百上千。根据数据元素类型,每行显示一个输入字段或分段控件。 iOS 13中的分段控件存在问题,当用户点击视图顶部的分段控件行的第一段或第二段并向下滚动时,它将为后续滚动视图中的某个随机分段控件行自动选择第一段/页。看起来好像控件状态没有刷新。
这是cellForRowAtIndexPath函数的代码段,在其中创建UISegmentedControl行。
QuestionOnTopTableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:@"YesNoInputIdentifier"];
if (!cell) {
cell = [[QuestionOnTopTableViewCell alloc] initWithCellStyle:QuestionCellStyleYesNo reuseIdentifier:@"YesNoInputIdentifier"];
}
cell.titleLabel.text = row.title;
cell.segmentControl.selectedSegmentIndex = row.answer ? row.answer.boolValue : UISegmentedControlNoSegment;
有人遇到这个问题吗?
注意:此问题仅在iOS13上发生。
不确定在iOS 13之前为什么没有发生这种情况,但是您应该可以通过覆盖UITableViewCell
来重置它>
class QuestionOnTopTableViewCell: UITableViewCell {
// stuffs
override func prepareForReuse() {
self.segmentControl.selectedSegmentIndex = UISegmentedControlNoSegment
}
}