如何从UITableViewCell获取UITableView?

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



斯蒂芬大帝
浏览 1348回答 3
3回答

月关宝盒

避免检查iOS版本id view = [tableViewCellInstance superview];while (view && [view isKindOfClass:[UITableView class]] == NO) {    view = [view superview]; }    UITableView *tableView = (UITableView *)view;

暮色呼如

在iOS7 beta 5中UITableViewWrapperView是的超级视图UITableViewCell。也是UITableView一个的监督UITableViewWrapperView。因此,对于iOS 7,解决方案是UITableView *tableView = (UITableView *)cell.superview.superview;因此,对于iOS 6以下的iOS,解决方案是UITableView *tableView = (UITableView *)cell.superview;

收到一只叮咚

Swift 5扩展递归地extension UIView {&nbsp; &nbsp; func parentView<T: UIView>(of type: T.Type) -> T? {&nbsp; &nbsp; &nbsp; &nbsp; guard let view = superview else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return nil&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; return (view as? T) ?? view.parentView(of: T.self)&nbsp; &nbsp; }}extension UITableViewCell {&nbsp; &nbsp; var tableView: UITableView? {&nbsp; &nbsp; &nbsp; &nbsp; return parentView(of: UITableView.self)&nbsp; &nbsp; }}使用循环extension UITableViewCell {&nbsp; &nbsp; var tableView: UITableView? {&nbsp; &nbsp; &nbsp; &nbsp; var view = superview&nbsp; &nbsp; &nbsp; &nbsp; while let v = view, v.isKind(of: UITableView.self) == false {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; view = v.superview&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return view as? UITableView&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP