控制器或视图类中的UIScroll回调

问题描述 投票:0回答:1

我有一个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)
    }
}
ios uitableview uiscrollview delegates uiscrollviewdelegate
1个回答
0
投票

您已经声明

class LargeTitleTableview: UITableView, UITableViewDelegate, UIScrollViewDelegate

您可以删除UIScrollViewDelegate。如果这是表视图的委托,则它是滚动视图的委托;否则,它是滚动视图的委托。它们是相同的对象和相同的委托。

尚不清楚LargeTitleTableviewDelegate的用途。我只是删除它。

但是,使表视图成为其自己的委托是很奇怪的。整个体系结构似乎是一个糟糕的选择。应该不需要子类化UITableView。如果您使用UITableViewController,则它是表视图的数据源和委托,您不应尝试颠覆它。

© www.soinside.com 2019 - 2024. All rights reserved.