0

我正在为 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 值分配给发件人的标签属性,然后从中检索正确的单元格。当表格是普通表格并且我只处理行号但在这里我必须跟踪行和部分时,这非常有效并且只有一个标签属性时,这非常有效。

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

谢谢

尼古拉

4

1 回答 1

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;
于 2013-10-11T08:50:50.493 回答