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

时间:2013-10-11 08:47:31

标签: objective-c uiview ios7

我正在为iOS7编码。 我有一个分组的UITableView,有3个不同的部分,每个部分都有多行。 在每一行中都有一个UITextField添加为accessoryView:

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

我需要在我的代码的其他位置检索正确的单元格/ textField,例如这段代码适用于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 个答案:

答案 0 :(得分:1)

如何使用保存indexPath的属性在UIView上创建类别?

·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;