gpt4 book ai didi

swift - 以编程方式向 UITableViewFooterHeaderView 添加按钮以转换到另一个 View Controller

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

Screenshot of Wikipedia iOS App

我正在尝试向标题添加一个按钮,该按钮会触发到另一个 View Controller 的转换,就像上面维基百科 iOS 应用程序屏幕截图的链接一样。我想我被绊倒了,因为我不能(至少我不认为我可以?)“呈现”、“显示”或“推送”另一个 View Controller ,因为我的类是 UITableViewHeaderFooterView。

我是 Swift 新手,希望我没有遗漏一些明显的东西,但任何帮助/指导将不胜感激!

这是我的代码的简化版本:

class HeaderCell: UITableViewHeaderFooterView {
var editButton: UIButton!

override init(reuseIdentifier: String?) {
self.editButton = UIButton()
self.editButton.setImage(UIImage(named: "Edit"), for: .normal)

super.init(reuseIdentifier: reuseIdentifier)

self.editButton.addTarget(self, action: #selector(editButtonPressed), for: .touchUpInside)

self.contentView.addSubview(editButton)

// Plaeholder for constraints
}

required init?(coder aDecoder: NSCoder) {
fatalError()
}

@objc func editButtonPressed() {
// Trigger transition to another view controller
}
}

最佳答案

你可以做一些事情:1)使用委托(delegate)2)从 View Controller 将目标添加到按钮3)使用响应者链

创建一个 HeaderCellDelegate:

protocol HeaderCellDelegate: class {
func didTapEdit()
}
class HeaderCell: UITableViewHeaderFooterView {
weak var delegate: HeaderCellDelegate?
/*
existing code
*/
@objc func editButtonPressed() {
// Trigger transition to another view controller
delegate?.didTapEdit()
}
}

然后在你的 View Controller 中:

将 HeaderCell 委托(delegate)设置为 self。

headerCell.delegate = self 

extension viewcontroller: HeaderCellDelegate {
func didTapEdit() {
//present/push the new view controller
}

关于swift - 以编程方式向 UITableViewFooterHeaderView 添加按钮以转换到另一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48775947/

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