gpt4 book ai didi

ios - UITableViewController 在初始化时不选择单元格

转载 作者:行者123 更新时间:2023-11-28 11:32:52 24 4
gpt4 key购买 nike

我有以下 UITableViewController 的子类:

final public class ILoveAppleSelectorTableViewController: UITableViewController {
public weak var delegate: ILoveAppleSelectorTableViewControllerDelegate?
public var data = [ILoveAppleGroupModel]()

convenience init() {
self.init(style: .plain)
}

convenience init(data: [ILoveAppleGroupModel]) {
self.init(style: .plain)
self.data = data
}

override public func viewDidLoad() {
super.viewDidLoad()
title = "Select APple Product"
tableView.registerCellClass(CheckmarkTableViewCell.self)
tableView.allowsSelection = true
tableView.allowsMultipleSelection = false
}

// MARK: - Selection

public func selectItem(at indexPath: IndexPath) {
tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none)
}

// MARK: - Table view data source

override public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}

override public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: CheckmarkTableViewCell = tableView.dequeueCell(for: indexPath)
let item = data[indexPath.row]
cell.textLabel?.text = item.material_group_name
return cell
}

override public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedappleProduct = data[indexPath.row]
delegate?.ILoveAppleSelector(controller: self, didSelect: selectedappleProduct)
}
}

我创建它的一个实例并调用 selectItem 方法:

let data = Array(appleProducts)
let selector = AppleProductSelector(data: data)
selector.selectItem(at: IndexPath(indexes: [0, 0]))
navigationController?.pushViewController(selector, animated: true)

我在调试器中检查了 selectItem 方法是否已成功调用,但未选择任何内容。

如果我改为在 viewWillAppear 上选择一个项目,一切都会按预期工作并且该项目显示为已选中:

public override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
selectItem(at: selectedIndexPath)
}

最佳答案

默认情况下, TableView Controller 将在显示 TableView 时清除选择。

您正在实例化您的类,然后“选择”一行,然后将 VC 压入堆栈。当它出现时,它会清除选择。

在 IB/Storyboard 中,它由复选框控制:

enter image description here

(取消选中该框以防止清除选择)

在代码中,您可以将其添加到您的初始化函数中(或者可能在 viewDidLoad() 中):

self.clearsSelectionOnViewWillAppear = false

关于ios - UITableViewController 在初始化时不选择单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56341868/

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