我正在尝试将核心数据中的抓取数据显示到我的tableview中,问题是我得到了。
'在UITableView'
类型的对象上找不到属性yttitle我已确保单元格标识符正确,并且正确合成了yttitle和其他标识符。为什么我会收到此错误?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
// Configure the cell...
NSManagedObject *device = [devices objectAtIndex:indexPath.row];
cell.ytTitle.text = [NSString stringWithFormat:@"%@", [device valueForKey: @"songName"]];
cell.ytAuthor.text = [NSString stringWithFormat:@"%@", [device valueForKey: @"author"]];
[cell.ytThumbnail.layer setBorderColor: [[UIColor grayColor] CGColor]];
[cell.ytThumbnail.layer setBorderWidth: 1.0];
NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: [NSString stringWithFormat:@"%@", [device valueForKey: @"link"]]]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
cell.ytThumbnail.image = image;
return cell;
}
答案 0 :(得分:3)
UITableViewCell没有该属性,您必须创建自己的自定义单元格视图并加载它,您可以使用此代码从xib加载它
NSArray *xibObj = [[NSBundle mainBundle] loadNibNamed:@"CustomTVCell" owner:nil options:nil];
for(id currentObj in xibObj){
if ([currentObj isKindOfClass:[CustomTVCell class]]) {
cell = (CustomTVCell *) currentObj;
}
}
答案 1 :(得分:1)
它抱怨,因为您尝试在UITableViewCell对象上调用此属性(yttitle),并且没有任何类似的属性。您应该将UITableViewCell转换为您的自定义类:
YOURCUSTOMTableViewCell *cell = (YOURCUSTOMTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) cell = [[YOURCUSTOMTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
并确保您的YOURCUSTOMTableViewCell包含属性(yttitle等)。 希望这有帮助。
答案 2 :(得分:1)
可能如果我理解你想要做什么,就不需要创建自定义单元格。您只需将 UITableViewCell 与 UITableViewCellStyleSubtitle 一起使用,然后使用以下代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
// Configure the cell...
NSManagedObject *device = [devices objectAtIndex:indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"%@", [device valueForKey: @"songName"]];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", [device valueForKey: @"author"]];
[cell.imageView.layer setBorderColor: [[UIColor grayColor] CGColor]];
[cell.imageView.layer setBorderWidth: 1.0];
NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString: [NSString stringWithFormat:@"%@", [device valueForKey: @"link"]]]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
cell.imageView.image = image;
return cell;
}
答案 3 :(得分:0)
您是否在为此TableView使用自定义单元格?请注意,您的方法是返回并使用标准UITableViewCell
,并且此标准单元格没有@propoerties
ytTitle
和ytAuthor
。
因此,如果您使用自定义单元格,则必须在代码中的三个位置更改它:
- (MyCustomCellClass *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyCustomCellClass *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) cell = [[MyCustomCellClass alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
...
如果在视图控制器中声明属性(这没有意义),则应将其移至自定义单元格并在VC中删除它。