在UITableView中的自定义单元格中引用UITextField

时间:2013-12-09 10:29:52

标签: ios objective-c uitableview uitextfielddelegate

我有一个静态UITableView有5个单元格如下:

custom UITableViewCell

当用户选择顶行时,我需要执行一个将数据填充到第二行的方法。

当对细胞进行排序时,我添加了一个类似的目标动作:

[cell.upperTextField addTarget:self action:@selector(upperTextFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

我收到有关此事件的通知。如何引用第二个文本视图(找到CellForRowAtIndexPath)以将数据输入其中?

我无法使用didSelectRow因为我禁用了选择 - 用户只能使用其中一个提供的TextField。

3 个答案:

答案 0 :(得分:1)

将标记值添加到UITextFields:

textField1.tag = 1;
textField1.tag = 2;

在upperTextFieldDidChange中:获取对textField的超级视图的引用,并按标记查找视图:

-(void)upperTextFieldDidChange:(id)sender
{
    UITextFields *tf = (UITextFields*)sender;
    int currentTag = tf.tag;
    // Do any validation if needed
    //Get reference to text field superview
    UIView *v = [tf superview];
    // Get reference to your second text field
    int tfTag = currentTag == 1 ? 2 : 1;
    UITextField *anotherTextField = (UITextField*)[v viewWithTag: tfTag];
    // Execute your method do other stuff here
}

希望这个帮助

答案 1 :(得分:1)

使用自定义单元格并使用CellForRowAtIndexPath方法查找单元格对象,现在您可以轻松找到如下所示的文本字段。

MyCellView myCell = [myTableView cellForRowAtIndexPath:<your index path>];
myCell.firstTextField 

myCell.secondTextField

如果要更改文字。您可以轻松更改textField的文本。

答案 2 :(得分:0)

如果认为通过继承UITableViewCell并在该单元格中处理内部更容易。然后,您可以直接访问正确的文本字段。

创建.h和.m wth

@interface YourCell : UITableViewCell

然后在您的storyboard单元的interfacebuilder检查器部分中为该类命名。 然后在cellForRowAtIndexPath中调用单元格

YourCell *tempCell = (YourCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];