-2

nameLabel 不起作用。当我运行应用程序时,出现以下错误: UITableViewCell nameLabel]: unrecognized selector sent to instance 0x1fc4e090. 但是,如果我将 nameLabel 设置为 textLabel,它就可以工作。

下面是我的代码:

@interface ViewController ()
{
     NSMutableArray *books;
 }
@end

- (void)viewDidLoad
{

    Book *book1 = [Book new];
    book1.name = @"The adventures of tintin";
    book1.imageFile = @"tintin.jpg";


    Book *book2 = [Book new];
    book2.name = @"Avatar";
    book2.imageFile = @"avatar.jpg";
    books = [NSMutableArray arrayWithObjects:book1, book2, nil];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{<br>
    static NSString *simpleTableIdentifier = @"BookCell";

    UITableViewCell *cell = [tableV dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    //MyBookCell *cell = [tableV dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:simpleTableIdentifier];
    }
    //if (cell == nil) {
        cell = [[MyBookCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:simpleTableIdentifier];
    }
    Book *bk = [books objectAtIndex:indexPath.row];
    cell.nameLabel.text = bk.name; (customised label)

    return cell;
}

这是自定义表格单元格的头文件

@interface MyBookCell : UITableViewCell 
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;

@end
4

3 回答 3

2

那是因为 UITableViewCell 没有名为 nameLabel 的属性。分配 textLabel.text 是正确的或者您可以实现自定义单元格类,并且有适合您的字段然后代替

UITableViewCell *cell = [tableV dequeueReusableCellWithIdentifier:simpleTableIdentifier];

你应该打电话

MyCustomCell* cell = (MyCustomCell*)[tableV dequeueReusableCellWithIdentifier];
if(cell == nil){
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell"owner:self options:nil];
    cell = [nib objectAtIndex:0];
}
于 2012-12-17T05:44:46.360 回答
0

没有像 nameLabel 这样的属性UITableViewCell。如果您对 进行了子类化UITableViewCell,则需要将其类型转换为您自己的自定义类,例如:

YourClass *cell = (YourClass *)[tableV dequeueReusableCellWithIdentifier:simpleTableIdentifier];

也像这样分配它:

cell = [[YourClass alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:simpleTableIdentifier];
于 2012-12-17T05:49:08.670 回答
0

您应该使用以下样式来加载自定义 UITableViewCell。

static NSString *CellIdentifier = @"CellCustom";
CellCustom *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil] objectAtIndex:0];
}
cell.nameLabel.text = @"Text";
于 2012-12-17T05:50:13.907 回答