我有一个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的新手所以温柔: - )
由于
麦克
答案 0 :(得分:0)
确保已在IB中连接文本字段和IBOutlet。 如果这不起作用,请尝试将其放入代码中:
NSLog(@"%i", cell.inputTextField == nil);
如果它将1
打印到控制台,则意味着inputTextField为nil,因此在nib文件,自定义类和tableview数据源之间的某处,连接会丢失。但正如我第一次说的那样,很可能文本字段在IB中没有正确连接。