【问题标题】:UIScroll callback in controller or view class控制器或视图类中的 UIScroll 回调
【发布时间】:2019-10-06 19:11:40
【问题描述】:

我有一个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)
    }
}

【问题讨论】:

    标签: ios uitableview uiscrollview delegates uiscrollviewdelegate


    【解决方案1】:

    你已经声明了

    class LargeTitleTableview: UITableView, UITableViewDelegate, UIScrollViewDelegate
    

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

    目前尚不清楚您认为 LargeTitleTableviewDelegate 的用途。我会直接删除它。

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

    【讨论】:

    • 感谢您的回答。 1. 我添加了UIScrollViewDelegate 尝试一下,因为回调(scrollViewDidScroll )没有出现在这个类中。 2.我继承了UITableView,这样我项目中的所有表都继承自这个类。所有表格都必须在顶部有一些视图(要求)。通过为表格创建一个单独的类,我可以通过更改情节提要中的表格类来轻松实现。真正的问题是当用户滚动时,我需要在这个类中回调LargeTitleTableview ,以便我可以根据需要进行一些修改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    相关资源
    最近更新 更多