首页 > 解决方案 > 控制器或视图类中的 UIScroll 回调

问题描述

我有一个子类UITableview(下面的代码)。我在我的视图控制器中使用了这个类。我想在我的表类中调用滚动视图。如何在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)
    }
}

标签: iosuitableviewuiscrollviewdelegatesuiscrollviewdelegate

解决方案


你已经声明

class LargeTitleTableview: UITableView, UITableViewDelegate, UIScrollViewDelegate

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

目前尚不清楚您认为 LargeTitleTableviewDelegate 的用途。我只想删除它。

然而,让表视图成为自己的委托是非常奇怪的。这整个架构似乎是一个糟糕的选择。应该不需要继承 UITableView。如果你使用 UITableViewController,它是 table view 的数据源和委托,你不应该试图破坏它。


推荐阅读