无法在UITableView中访问原型单元格中的标签

时间:2014-04-23 14:21:34

标签: objective-c uitableview

这是我的代码:

@implementation NViewController{
    NSArray *recipes;
}
- (void)viewDidLoad
{
    [super viewDidLoad];

    recipes = [NSArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", nil];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [recipes count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"RecipeCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    cell.textLabel.text = [recipes objectAtIndex:indexPath.row];

    return cell;
}

@end

我在原型tableviewcell中向内容视图添加标签但无法访问它(txtname)。 请给我一个解决方案

2 个答案:

答案 0 :(得分:4)

您可以在返回单元格之前在storyboard和cellForRowAtIndexPath:方法中为标签设置标记(例如100),您可以通过标记

获取对该标签的引用
UILabel *taggedLabel =(UILabel*) [cell.contentView viewWithTag:100]; 
taggedLabel.text = [recipes objectAtIndex:indexPath.row];

答案 1 :(得分:3)

当您向原型单元格添加标签并希望通过代码访问该标签时,您还需要执行以下操作:

  • 为自定义单元格定义一个类,扩展UITableViewCell
  • 在自定义单元格类
  • 中为您的标签添加IBOutlet属性txtname
  • 在outlet属性和标签之间建立连接(例如通过命令拖动)
  • 将自定义单元格的类型设置为情节提要中原型单元格的属性
  • 更改代码以引用自定义单元格类型而不是UITableViewCell

最后一步更改代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"RecipeCell";
    MyCustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil) {
        cell = [[MyCustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }
    cell.txtname.text = [recipes objectAtIndex:indexPath.row];
    return cell;
}