我有一个UITableview
的子类(下面的代码)。我在视图控制器中使用了此类。我想在表类中使用滚动视图的callabck。如何在LargeTitleTableview
类中获取回调?还是滚动回调只会出现在控制器类中?我是否缺少任何委托或设置?
import Foundation
import UIKit
protocol LargeTitleTableviewDelegate: class {
func scrollHua(largeTitleTableview: LargeTitleTableview, scrollViewInstance scrollView: UIScrollView)
}
class LargeTitleTableview: UITableView, UITableViewDelegate, UIScrollViewDelegate {
weak var largeTitleTableviewDelegate: LargeTitleTableviewDelegate?
override func awakeFromNib() {
super.awakeFromNib()
configureTableView()
}
fileprivate func configureTableView() {
self.contentInset = UIEdgeInsets(top: 100, left: 0, bottom: 0, right: 0)
self.scrollIndicatorInsets = self.contentInset
let view = UIView(frame: CGRect(x: 0, y: -100, width: 200, height: 100))
view.backgroundColor = .red
self.addSubview(view)
self.delegate = self
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
print("Callback is not coming in this class")
largeTitleTableviewDelegate?.scrollHua(largeTitleTableview: self, scrollViewInstance: scrollView)
}
}
您已经声明
class LargeTitleTableview: UITableView, UITableViewDelegate, UIScrollViewDelegate
您可以删除UIScrollViewDelegate。如果这是表视图的委托,则它是滚动视图的委托;否则,它是滚动视图的委托。它们是相同的对象和相同的委托。
尚不清楚LargeTitleTableviewDelegate的用途。我只是删除它。
但是,使表视图成为其自己的委托是很奇怪的。整个体系结构似乎是一个糟糕的选择。应该不需要子类化UITableView。如果您使用UITableViewController,则它是表视图的数据源和委托,您不应尝试颠覆它。