nameLabel不起作用。当我运行该应用程序时,会发生以下错误: UITableViewCell nameLabel]:无法识别的选择器发送到实例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
答案 0 :(得分: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];
}
答案 1 :(得分:0)
对于UITableViewCell
来说,Ther不像nameLabel这样的属性。
如果您将UITableViewCell
子类化,则需要将其强制转换为您自己的自定义类,如:
YourClass *cell = (YourClass *)[tableV dequeueReusableCellWithIdentifier:simpleTableIdentifier];
同样分配:
cell = [[YourClass alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
答案 2 :(得分: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";