自定义单元格标签返回nil

时间:2015-03-27 05:12:58

标签: ios objective-c uitableview

我有一个tableview,我已经加载了自定义单元格。

但是,单元组件不会显示。 (标签返回nil - 见下图)

enter image description here

我创建了很多tableview,并且过去已经嵌入了自定义单元格。但是,我遇到了一个无法找到解决方案的问题。

代码如下:

索引路径行的单元格

static NSString *CellIdentifier = @"cell";

    MyCell *cell = (MyCell *) [tableView  dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle   reuseIdentifier:CellIdentifier];

    }



    cell.myLabel.text = @"fhjfhjdhfjdfhd ";

    return cell;

自定义单元格.h文件

#import <UIKit/UIKit.h>



@interface MyCell : UITableViewCell{



}

@property (weak, nonatomic) IBOutlet UILabel * myLabel;




@end

自定义单元格.m文件

#import "MyCell.h"



@implementation MyCell

@synthesize myLabel;



- (void)awakeFromNib {

    // Initialization code

}



- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

    [super setSelected:selected animated:animated];



    // Configure the view for the selected state

}

@end

故事板

enter image description here

enter image description here

更新

有一个项目https://github.com/honcheng/PaperFold-for-iOS

在侧边栏上有滑动时出现的桌面视图。

表格视图,它不会显示任何自定义标签组件。

不知道这些信息是否有助于发现问题。

4 个答案:

答案 0 :(得分:2)

如果您使用xib创建了自定义单元格,则需要在创建单元格时加载该笔尖为 -

static NSString *cellIdentifier = @"cellIdentifier";
CustomCell *cell = nil;
        cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if(cell == nil)
        {
            cell = (CustomCell *)[[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil] lastObject];

        }

[cell.label setText:@"label text"];

答案 1 :(得分:1)

请使用以下代码

   if (cell == nil) {

        NSArray *nib=[[NSBundle mainBundle] loadNibNamed:@"YourCustomCellName" owner:self options:nil];
        cell=[nib objectAtIndex:0];  //index of your custom cell
    }

注意:在将字符串分配给该标签之前,还请检查您的自定义单元格是否已分配内存。并且您的自定义单元格已连接到“自定义类”(右侧检查器中有第3列)

请参阅随附的屏幕截图。

enter image description here

答案 2 :(得分:0)

尝试这个, 然后为您的标签设置标签

UILabel *lblName=[[UILabel alloc]initWithFrame:CGRectZero];
lblName=(UILabel *)[cell.contentView viewWithTag:5];

将您的值分配给标签

答案 3 :(得分:0)

如果您使用故事板来自定义您的单元格。

您不需要在tableView:cellForRowAtIndexPath:

中分配单元格

像这样使用

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    return cell;
}

enter image description here