为了账号安全,请及时绑定邮箱和手机立即绑定

如何从UITableViewCell获取UITableView?

如何从UITableViewCell获取UITableView?

斯蒂芬大帝 2019-11-12 12:51:11
我有一个UITableViewCell链接到对象的对象,我需要确定单元格是否可见。从我完成的研究中,这意味着我需要以某种方式访问UITableView包含它的对象(从那里,有几种方法可以检查它是否可见)。所以我想知道是否UITableViewCell有指向的指针UITableView,或者是否还有其他方法可以从单元格获取指针?
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

避免检查iOS版本


id view = [tableViewCellInstance superview];


while (view && [view isKindOfClass:[UITableView class]] == NO) {

    view = [view superview]; 

}


    UITableView *tableView = (UITableView *)view;


查看完整回答
反对 回复 2019-11-12
?
暮色呼如

TA贡献1853条经验 获得超9个赞

在iOS7 beta 5中UITableViewWrapperView是的超级视图UITableViewCell。也是UITableView一个的监督UITableViewWrapperView。


因此,对于iOS 7,解决方案是



UITableView *tableView = (UITableView *)cell.superview.superview;


因此,对于iOS 6以下的iOS,解决方案是



UITableView *tableView = (UITableView *)cell.superview;


查看完整回答
反对 回复 2019-11-12
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

Swift 5扩展

递归地

extension UIView {

    func parentView<T: UIView>(of type: T.Type) -> T? {

        guard let view = superview else {

            return nil

        } 

        return (view as? T) ?? view.parentView(of: T.self)

    }

}


extension UITableViewCell {

    var tableView: UITableView? {

        return parentView(of: UITableView.self)

    }

}

使用循环

extension UITableViewCell {

    var tableView: UITableView? {

        var view = superview

        while let v = view, v.isKind(of: UITableView.self) == false {

            view = v.superview

        }

        return view as? UITableView

    }

}


查看完整回答
反对 回复 2019-11-12
  • 3 回答
  • 0 关注
  • 1347 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信