提问人:Philipp 提问时间:10/12/2023 最后编辑:Philipp 更新时间:10/12/2023 访问量:37
将变量传递到自定义 UITableViewHeaderFooterView
Passing a variable into custom UITableViewHeaderFooterView
问:
有一个包含.UIViewController
UITableView
class ProfileViewController: UIViewController {
private lazy var profileView: ProfileHeaderView = {
let profileView = ProfileHeaderView()
return profileView
}()
private lazy var feedView: UITableView = {
let feedView = UITableView().feedView(isHeaderHidden: true)
feedView.isUserInteractionEnabled = true
feedView.allowsSelection = true
return feedView
}()
...
}
其中有一个自定义标头(自定义类符合协议),它是以这种方式实现的:UITableView
ProfileHeaderView
UITableViewHeaderFooterView
extension ProfileViewController: UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 0 {
if let view = tableView.dequeueReusableHeaderFooterView(withIdentifier: "ProfileHeaderView") as? ProfileHeaderView {
view.isUserInteractionEnabled = true
return view
}
}
return nil
}
}
假设我们有一个变量(例如字符串)。如何将此变量的值从我们的自定义标头传递到我们的自定义标头中?ProfileHeaderView
UIViewController
编辑以下是声明的快速浏览:ProfileHeaderView
class ProfileHeaderView: UITableViewHeaderFooterView {
public var statusText: String?
override init(reuseIdentifier: String?) {
super.init(reuseIdentifier: reuseIdentifier)
addSuviews()
setupConstraints()
changeBackgroundColor()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
addSuviews()
setupConstraints()
changeBackgroundColor()
}
...
}
答:
1赞
HangarRash
10/12/2023
#1
只需为 赋值即可。statusText
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 0 {
if let view = tableView.dequeueReusableHeaderFooterView(withIdentifier: "ProfileHeaderView") as? ProfileHeaderView {
view.isUserInteractionEnabled = true
view.statusText = "some status text for section 0"
return view
}
}
return nil
}
但是,您还需要让标题视图在更改时更新标签或其他一些 UI 组件。statusText
class ProfileHeaderView: UITableViewHeaderFooterView {
public var statusText: String? {
didSet {
someLabel.text = statusText // update the UI as needed
}
}
评论
0赞
Philipp
10/12/2023
谢谢!!!我没有用那么多,所以没有把它当作一个解决方案!它:)didSet
2赞
DonMag
10/12/2023
@Philipp - 只是一个旁注......这正是我在上一个问题中向您展示的示例中所做的:stackoverflow.com/a/77261827/6257435:)
0赞
Philipp
10/13/2023
@DonMag 对不起,我错过了!再次感谢你:)
评论
ProfileHeaderView
ProfileHeaderView
UIViewController
init()
ProfileHeaderView