我创建了一个名为GateCell
的自定义UITableViewCell,在其中我放置了一个标签和一个文本字段。
在GateCell.h
@property (weak, nonatomic) IBOutlet UILabel *gateLabel;
@property (weak, nonatomic) IBOutlet UITextField *gateTextField;
在GateTableViewController
- (void)viewDidLoad {
[self.tableView registerClass:[GateCell class] forCellReuseIdentifier:@"cellIdentifier"];
}
最后在cellForRowAtIndexPath方法中,我像这样使用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
GateCell *cell = (GateCell *)[tableView dequeueReusableCellWithIdentifier:@"cellIdentifier"];
cell.gateLabel.text = @"Gate";
cell.gateTextField.text = @"Open Gate"
return cell;
}
当我打印单元格的描述时,我得到以下内容..
<`GateCell`: 0x7b6bd790; baseClass = `UITableViewCell`; frame = (0 0; 320 44); layer = <CALayer: 0x7b6c2e60>> <br>
打印细胞的描述 - > _gateLabel:
零
打印单元格的说明 - > _gateTextField:
零
为什么label和textField在创建单元格时返回nil
答案 0 :(得分:0)
首先确保您从界面构建器连接IBOutlet
。如果没有,则连接IBOutlet
。
获取单元格使用以下
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellReuseIdentifier"];
答案 1 :(得分:0)
我在registerClass:forCellReuseIdentifier:
执行dequeueReusableCellWithIdentifier:
tableView:cellForRowAtIndexPath:
时遇到了麻烦。
自dequeueReusableCellWithIdentifier:
发布以来,我不得不替换registerClass:forCellReuseIdentifier:
并直接替换init单元格。
以tableView:cellForRowAtIndexPath:
方式试用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//Create your custom cell GateCell the way it has to be done providing the 'reuseIdentifier'
//With a standard UITableViewCell it should be :
//UITableViewCell* cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellIdentifier"];
GateCell *cell = [[GateCell alloc] init];
cell.gateLabel.text = @"Gate";
cell.gateTextField.text = @"Open Gate"
return cell;
}
答案 2 :(得分:-1)
致电
[self.tableView registerClass:[GateCell class] forCellReuseIdentifier:@"cellIdentifier"];
表视图将直接创建一个单元格,而不是来自NIB文件,因此不会设置IBOutlets
(无处可设置)。
您应该注册NIB而不是类,或者您应该在initWithStyle:reuseIdentifier:
中创建子视图。
您的其他评论表明您正在使用故事板。在这种情况下,您应该将在storyboard中添加的单元格的类设置为GateCell
,并将单元格标识符设置为cellIdentifier
。然后,在代码中,您应该删除对[self.tableView registerClass:[GateCell class] forCellReuseIdentifier:@"cellIdentifier"];
的调用,因为该调用正在取代故事板注册......