我正在使用UITableView创建自定义控件。此控件只是一个表视图,在一个节中有多行。我们称之为MyCustomControl

在表格视图的每个单元格中,我添加了一个UITextField控件。

----------------
| ------------ |
|| Text Field || -> CELL
| ------------ |
----------------

该单元格只是默认的UITableViewCell,我使用[cell addSubview:textField];添加了文本字段

我可以使用以下方法访问表视图上的每个文本字段组件:
- (UITextField*) textFieldAtIndex:(NSInteger)index
{
    NSIndexPath* indexPath = [NSIndexPath indexPathForRow:index inSection:0];

    UITableViewCell* cell = [self tableView:[self containerTableView] cellForRowAtIndexPath:indexPath];

    UITextField* textField = [[cell subviews] lastObject];

    return textField; // It should returning the reference of textField right??
}

曾几何时,我在项目中某个位置的视图控制器中使用此MyCustomControl
- (void) viewDidLoad
{
    [super viewDidLoad];

    CGPoint origin = CGPointMake(100.f, 100.f);

    CGFloat width = 200.f;

    // Create custom control with text field generated as many as given parameter
    MyCustomControl* textGroup = [[MyCustomControl alloc] initWithOrigin:origin width:width textFieldCount:2];

    // Here is the problem, I try to set current view controllers's text fields
    // with the text field generated by MyCustomControl.
    // Text field returned are new text field with same properties instead of reference.
    self.txtUsername = [textGroup textFieldAtIndex:0]; // Text Field are copied!
    self.txtPassword = [textGroup textFieldAtIndex:1]; // Not return a pointer!

    [self.txtUsername setDelegate:self]; // Fail
    [self.txtPassword setDelegate:self]; // Fail

    [[self view] addSubview:textGroup];

    [[self view] addSubview:[self txtUsername]]; // New text field appeared on view
}

我期望从方法MyCustomControl访问的textFieldAtIndex:中的文本字段具有完全控制权,但是与其引用该文本字段,不如在我的视图控制器中获得了该文本字段的新副本。而且我无法为该文本字段设置委托,也无法为所有其他内容(如文本)设置委托。

如何从该表格视图单元格的文本字段中获取引用?

最佳答案

检查我对此的回答,他们想要一个文本字段,但是过程是相同的,比这里的其他一些解决方案更清洁:

How to get UITableView Label Text string - Custom Cell

那就是假设您知道索引路径。

07-24 15:33