gpt4 book ai didi

ios - 当用户在 swift ios 中选择 tableview 行时显示复选标记

转载 作者:行者123 更新时间:2023-11-29 05:58:30 25 4
gpt4 key购买 nike

我想仅在选定的行上显示复选标记,如下面的屏幕截图所示。 enter image description here

这里的删除和复选标记是动态创建的按钮。

下面是我的表格 View 方法。

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

if list.count == 0 {
let alertView = UIAlertController(title: "Alert", message: "No layout found. Please add at least one plist file with correct format.", preferredStyle: .alert)
alertView.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
UIApplication.shared.keyWindow?.rootViewController?.present(alertView, animated: true, completion: nil)
self.removeFromSuperview()
}
return list.count
}
var btn = UIButton()

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "cell")
if let cell = cell {
print("cell is available")
// Remove previously created button from reused cell view
if let button = cell.contentView.subviews.first(where: { (view: UIView) -> Bool in
view.isKind(of: UIButton.self)
}) {
button.removeFromSuperview()
}
} else {
cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
}

cell?.textLabel?.textAlignment = .left

cell?.textLabel?.text = list[indexPath.row]

if indexPath.row == (list.count - 1) {
cell?.textLabel?.textAlignment = .center
} else {
btn = UIButton(type: UIButtonType.custom) as UIButton
btn.frame = CGRect(x: 146, y: 0, width: 20, height: (cell?.frame.height)!)
btn.addTarget(self, action: #selector(buttonPressed(sender: )), for: .touchUpInside)
btn.tag = indexPath.row
btn.setImage(UIImage(named: "delete.png"), for: .normal)
cell?.contentView.addSubview(btn)
}
return cell!
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

if list[indexPath.row] == "➕ Add Room"{
print("ADd reoom selrctj")
self.delegate?.enterRoomName()

}else{
self.delegate?.slecetedPicklist(fileName: list[indexPath.row])
self.removeFromSuperview() //hiding drop down

if indexPath.row == btn.tag{ //Here it's not correct i think
btn.setImage(UIImage(named: "check_mark.png"), for: .normal)
}else{
btn.setImage(UIImage(named: "delete.png"), for: .normal)
}
self.table?.reloadData()
}
}

在此实现之后,我无法实现此要求,结果如下所示。即使选择行后,它也会显示删除,并且当点击它时会出现下拉菜单,我会将其从 super View 中删除。

enter image description here

有人可以建议我如何实现这个或者我做错了什么吗?提前致谢。

最佳答案

您需要在数组中存储(根据项目选择和取消选择添加/删除项目或索引)项目或项目索引,并使用以下代码在 didSelectRowAt 方法中更新(重新加载)选定的行。

tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: false)

然后您需要在 cellForRowAt 方法中检查数组中是否有可用的项目,然后相应地显示刻度线。

关于ios - 当用户在 swift ios 中选择 tableview 行时显示复选标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54899328/

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