gpt4 book ai didi

swift - 滚动 tableview 时 UISegment 值发生变化

转载 作者:行者123 更新时间:2023-11-28 11:15:05 26 4
gpt4 key购买 nike

我正在使用 UISegmentControl 在表格 View 中显示目标类型的问题。但是,如果我在任何一个单元格中选择一个段,那么如果我滚动,一些段值就会改变。我不知道如何解决。请指导我。

单元格大小: 160px

段色调:蓝色

编码

//UIViewController
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = segTblVw.dequeueReusableCellWithIdentifier("segment", forIndexPath: indexPath) as! segmentTblCell

return cell
}

//UITableViewCell CLASS
class segmentTblCell: UITableViewCell {



@IBOutlet weak var segMent: UISegmentedControl!


override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

// Configure the view for the selected state
}

}

下面的屏幕截图:

enter image description here

最佳答案

您遇到这个问题是因为 dequeueReusableCellWithIdentifier: 的工作原理。每次一个单元格滚出屏幕时,它都会进入一个缓存区域,在那里它会被重复使用。

假设您有 100 个单元格。它们的所有 segmentedControl 对象都设置为 first。你点击一个来改变它的值(value)。当单元格移出 View 时,它会进入缓存,如果您进一步向下滚动,它将在缓存中出列。

理解这一点很重要,因为 segmentedControl 对象实际上并没有改变。由于出列行为,它看起来正在发生变化。

要解决这个问题,您需要实现一个数据源来存储 segmentedControl 对象的值,这样您就可以在每次单元格出列时正确地重新初始化它。

关于swift - 滚动 tableview 时 UISegment 值发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32351998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com