UIVIew:有没有办法让多个标签来检索超级视图?

Posted

技术标签:

【中文标题】UIVIew:有没有办法让多个标签来检索超级视图?【英文标题】:UIVIew: Is there a way to have multiple tags to retrieve the superview? 【发布时间】:2013-10-11 08:47:31 【问题描述】:

我正在为 ios7 编写代码。 我有一个分组的 UITableView,有 3 个不同的部分,每个部分都有多行。 在每一行中都有一个 UITextField 作为附件视图添加:

UITextField *myTextField = [UITextField alloc] init];
cell.accessoryView = myTextField;

我需要在我的代码的其他地方检索正确的单元格/文本字段,例如此代码在 iOS6 上运行:

-(void) textFieldValueDidChange: (UITextField*) sender

 NSIndexPath *indexPath = [self.tableView indexPathForCell: (UITableViewCell*) sender.superview];

 switch (indexPath.section)

  case(SECTION_1):

      switch(indexPath.row)

        case(ROW_1):
          //DO SOMETHING
        

      

  

 

这种代码在 iOS7 中中断。

在另一个线程上,有人建议我不要像这样检索我的子视图,而是在创建单元格时将 indexPath.row 值分配给发件人的 tag 属性,然后从中检索正确的单元格。当表格是普通表格并且我只处理行号但在这里我必须跟踪行和部分时,这非常有效,并且有只有一个标签属性。

处理它的最佳选择是什么?我考虑过添加 1000、2000、3000 等来跟踪该部分,例如:2003 意味着 indexPath.section = 2 和 indexPath.row = 3 但这对我来说并不是一个优雅的解决方案。有什么想法吗?

谢谢

尼古拉

【问题讨论】:

【参考方案1】:

如何在 UIView 上创建一个类别,其属性将保存 indexPath?

.h:

@interface UIView (IndexPathTag)

@property (nonatomic, retain) NSIndexPath *indexPathTag; 

.m

@implementation UIView(IndexPathTag) 

然后,在你的代码中,如果你导入 UIView+IndexPath,你可以这样做:

#import "UIView+IndexPathTag.h"

myView = [[UIView alloc] init];

 myView.indexPathTag = indexPath;

【讨论】:

以上是关于UIVIew:有没有办法让多个标签来检索超级视图?的主要内容,如果未能解决你的问题,请参考以下文章

基于子视图约束的超级视图没有增加高度

如何以编程方式将 UIView 粘贴到其超级视图的右侧

UIView 和子视图代表

如何判断 UITabBar 是不是从自定义视图打开?

有没有办法让 CALayer 的动作字典永久优先于其 UIView 委托?

如何创建一个序列来迭代从 UIView 向上到视图层次结构到根的所有祖先(超级视图)?