首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何认识superview层次结构

如何认识superview层次结构
EN

Stack Overflow用户
提问于 2014-07-05 17:40:25
回答 2查看 258关注 0票数 0

我使用了这段代码从我的UIButton中获得一个UITableViewCell,但是它没有工作。所以我已经调试了半个小时才知道superview里面是什么。

代码语言:javascript
复制
UIButton *button = (UIButton *)sender;
UITableViewCell* cell = (UITableViewCell*)button.superview.superview.superview;
UITableView* tableView = (UITableView*) cell.superview.superview;
NSIndexPath* indexPath = [tableView indexPathForCell:cell];

对我来说,现在的问题是:我如何知道将来UITableView或其他人的层次结构是什么?难道没有一个列表,我可以看到我需要多少超视率,而不需要对它进行100次测试,并设置BreakPoints来查看它所指的类?

问候

EN

回答 2

Stack Overflow用户

发布于 2014-07-05 18:12:03

你可能最终会选择superview层次结构,但你知道这不是个好主意,因为苹果随时都可能改变他们的表视图层次结构。有更好的方法可以获得表视图单元格的索引路径,在其中一个单元格中有一个按钮。

  1. 如果所有按钮都位于表视图的一个部分,只需将每个按钮的标记设置为单元格的索引路径行。然后,您可以重新创建索引路径,知道按钮在哪一行。
  2. 您可以始终子类UITableViewCell,并为子类中的按钮实现操作方法。子类可以将委托方法调用到希望了解按钮抽头的任何对象。

因此,希望这能让你对你之前做过的事情有一个想法。正如您所说,计算出superview层次结构是很费时的,而且随时都可能发生变化。

票数 1
EN

Stack Overflow用户

发布于 2014-07-05 17:59:18

如果要检查多个superview层次结构,请检查如下所示:

代码语言:javascript
复制
UIView * view=(UIView*)sender;

while ((view= [view superview])) {
    if(viewisKindOfClass:[UITableView class]) {
        //your code
        return;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24588986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档