在对象UiTableViewCell上找不到属性

时间:2014-01-09 16:24:16

标签: ios objective-c

我正在尝试将核心数据中的抓取数据显示到我的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;
}

4 个答案:

答案 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 ytTitleytAuthor

因此,如果您使用自定义单元格,则必须在代码中的三个位置更改它:

- (MyCustomCellClass *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyCustomCellClass *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (cell == nil) cell = [[MyCustomCellClass alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
...

如果在视图控制器中声明属性(这没有意义),则应将其移至自定义单元格并在VC中删除它。