gpt4 book ai didi

ios - 自定义 HeaderView 只显示在最后一个 Section

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

我为 UITableView 创建了一个自定义标题 View 。标题 View 的类型是 UITableViewCell。我在 Storyboard 中实现了它,并将其添加到 View 层次结构中,如下面的屏幕截图所示

enter image description here

这是我的 UITableViewController 代码

import UIKit

class SecondCustomTableViewController: UITableViewController {

@IBOutlet weak var customHeaderView: UITableViewCell!
let array = ["Row 1", "Row 2", "Row 3"]

override func viewDidLoad() {
super.viewDidLoad()

self.tableView.register(SecondCustomTableViewController.self, forHeaderFooterViewReuseIdentifier: "Header")
self.tableView.dequeueReusableHeaderFooterView(withIdentifier: "Header")

}

// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
return 3
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

cell.textLabel?.text = "\(array[indexPath.row])"

return cell
}

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 44
}

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
print("\(customHeaderView) -> Section: \(section)")
return customHeaderView
}
}

当我在模拟器中运行它时它看起来像这样

enter image description here

我的问题是:为什么我的自定义标题 View 只显示最后一部分?

viewForHeaderInSection 方法中的打印语句如下所示:

Optional(<UITableViewCell: 0x7ff287802200; frame = (0 0; 375 44); clipsToBounds = YES; layer = <CALayer: 0x600000038d00>>) -> Section: 0
Optional(<UITableViewCell: 0x7ff287802200; frame = (0 0; 375 44); clipsToBounds = YES; autoresize = W; layer = <CALayer: 0x600000038d00>>) -> Section: 1
Optional(<UITableViewCell: 0x7ff287802200; frame = (0 176; 375 44); clipsToBounds = YES; autoresize = W; layer = <CALayer: 0x600000038d00>>) -> Section: 2

我还解包了可选项,使其成为非可选项,但行为相同。由于 print 语句显示 viewForHeaderInSection 方法被调用了 3 次,那么为什么标题只显示最后一个部分?

我希望有人能帮我解决这个问题。非常感谢每一个提示。

最佳答案

我认为这是因为无法复制 ui 元素,您正在做的是将 UITableViewCell 的实例创建为 IBOutlet。更好的是,您可以在需要时创建 View 。

 override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return tableView.dequeueReusableCell(withIdentifier: "Header") as! UITableViewHeaderFooterView
}

希望对您有所帮助。抱歉我的英语不好。

关于ios - 自定义 HeaderView 只显示在最后一个 Section,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41856808/

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