设置UITableViewCell子视图标记属性

时间:2011-02-01 22:17:08

标签: iphone uitableview subview

我有一个UITableView,其单元格在NIB文件中自定义,因此我可以拥有UILabel和UITextField。

因此我的cellForRowAtIndexPath如下所示:

- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    SectionCustomCell *cell = (SectionCustomCell *)[tableView       
    dequeueReusableCellWithIdentifier: @"Section"];

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SectionCustomCell"                                                       
                            owner:self                                               
                            options:nil];

    cell = [nib objectAtIndex:0];

    // Set the label value
    [[cell inputLabel] setText:@"something"];

    // Set the textfield tag property
}

因此,对于给定的部分/行,我将为UILabel分配一些文本,定义为 inputLabel ,并且有一个UITextField,名为 inputTextField 从中获取一些文本用户。

我的计划是设置UITextField的标记属性,以便我可以确定我在代理 textFieldDidEndEditing 中获得的字段。

现在我的问题,如果我把这段代码:

 UITextField *textField = nil;
 for (UIView *oneView in cell.contentView.subviews) 
 {
    if ([oneView isMemberOfClass:[UITextField class]])
       textField = (UITextField *)oneView;
 }
 textField.tag = [indexPath row];

标记属性设置正确。 (我从NSLog声明中知道这一点)。但是,如果我执行以下操作,则设置正确。它总是1,如IB中所定义。

 cell.inputTextField.tag = [indexPath row];

但是对我来说这应该工作。我在设置标签文本时也遵循相同的原则。有人可以帮助我理解为什么它不起作用吗?

我是iOS的新手所以温柔: - )

由于

麦克

1 个答案:

答案 0 :(得分:0)

确保已在IB中连接文本字段和IBOutlet。 如果这不起作用,请尝试将其放入代码中:

NSLog(@"%i", cell.inputTextField == nil);

如果它将1打印到控制台,则意味着inputTextField为nil,因此在nib文件,自定义类和tableview数据源之间的某处,连接会丢失。但正如我第一次说的那样,很可能文本字段在IB中没有正确连接。