[UITableView内部的iOS 13 UISegmentedControl缓存了先前的选择

问题描述 投票:0回答:1

我有一个带有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 uisegmentedcontrol ios13
1个回答
0
投票

不确定在iOS 13之前为什么没有发生这种情况,但是您应该可以通过覆盖UITableViewCell来重置它>

class QuestionOnTopTableViewCell: UITableViewCell {

     // stuffs

    override func prepareForReuse() {
        self.segmentControl.selectedSegmentIndex = UISegmentedControlNoSegment
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.