gpt4 book ai didi

ios - 在一个表格 View 单元格中创建一个 UISwitch - UISwitch 被复制

转载 作者:行者123 更新时间:2023-11-28 21:14:22 30 4
gpt4 key购买 nike

我有 11 行或更多行。只需要在第一个单元格中创建一个 UISwitch。当我单击任何行时,UIswitch 会重复。

UITableViewCell *cell =  [tableView dequeueReusableCellWithIdentifier:EN_MoreTableViewCell];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:EN_MoreTableViewCell];
cell.backgroundColor = [UIColor clearColor];
}
cell.textLabel.text = languageObject.name;
[cell.textLabel setFont:font];
if (indexPath.row == 0 && [languageObject.name isEqual: @"All Languages"]) {
if (!mySwitch) {
mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(_languageListTableView.frame.size.width - 60, 0, 40, 40)];
[cell.contentView addSubview:mySwitch];
}
cell.accessoryType = UITableViewCellAccessoryNone;
}
else { //other cell code//

}

请帮忙。

最佳答案

这是一个经典的 iOS 新手问题。当我们第一次使用 TableView 时,这让我们大多数人感到困惑(一开始我确实感到困惑。)

单元格创建一次,然后一遍又一遍地重复使用。如果可用,函数 dequeueReusableCellWithIdentifier() 返回一个回收的单元格,如果不可用,则从您的单元格原型(prototype)创建一个新单元格。

如果你得到一个回收电池,它已经添加了你的开关。

处理此问题的最简洁方法是使用 UITableViewCell 的自定义子类定义一个单元格原型(prototype),该子类已将您的所有字段添加并作为导出连接到单元格。然后,当您将单元格出队时,只需将其转换为您的自定义 UITableViewCell 类并使用您定义的属性来访问您的自定义字段(在本例中为您的开关。)

回收单元格也可能在它的其他字段中包含值(就像如果您将标签字段设置为包含字符串,它仍将包含该字符串。)您需要清除旧值并完全配置回收单元格. (自定义单元格类和原型(prototype)无法解决此问题。您始终需要完全配置单元格中的每个字段。)

关于ios - 在一个表格 View 单元格中创建一个 UISwitch - UISwitch 被复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793356/

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