使用 Swift 的代表
Posted
技术标签:
【中文标题】使用 Swift 的代表【英文标题】:Delegates with Swift 【发布时间】:2018-04-26 15:09:25 【问题描述】:目前我有一个带有 TableView 的 ViewController 和一个包含后退按钮的自定义 Header。我想从头类中说ViewController必须回到之前的ViewController。我面临的问题是我符合协议并且接收到按钮的操作,但调试器没有进入解除功能。代码如下:
protocol StoresFilterHeaderViewDelegate: class
func onBackButtonTap();
class StoresFilterHeaderView: UICollectionReusableView
weak var delegate: StoresFilterHeaderViewDelegate?;
@IBOutlet weak var lbSubcategory: UILabel!
@IBOutlet weak var ivSubcategory: UIImageView!
// MARK: Actions
@IBAction func onBackToMomentDetailButtonTap(_ sender: AnyObject)
self.delegate?.onBackButtonTap();
print("button pressed");
“按钮按下”打印得很好
class StoresFilterViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, StoresFilterHeaderViewDelegate
func onBackButtonTap()
print("segueback")
“segueback”没有被打印出来
【问题讨论】:
你设置了StoresFilterHeaderView
的代理吗? (<instance of the custom view>.delegate = self
)
@the4kman 我设置:weak var delegate: StoresFilterHeaderViewDelegate?;
不是吗?
这只是声明委托本身,您没有设置它的值。 Check out this guide.
Swift Delegate Not Being Called的可能重复
不相关,但这是 Swift:没有尾随分号!
【参考方案1】:
在创建 headerview 时,将其委托设置为 self。
headerView.delegate = self
你应该在StoresFilterViewController
初始化headerView
之后添加这个
【讨论】:
以上是关于使用 Swift 的代表的主要内容,如果未能解决你的问题,请参考以下文章