使用自定义UITableViewCell警告不兼容的指针类型

时间:2013-11-26 23:55:50

标签: ios objective-c uitableview

我在视图控制器中有一个UITableView。表视图使用名为UserFavoritesCell的自定义单元格。在代码中引用此单元格时,我收到以下警告:

Incompatible pointer types initializing UserFavoritesCell with an expression of UITableViewCell.

由于UserFavoritesCell是UITableViewCell的子类,我不知道为什么我会收到此警告。有任何想法吗?谢谢!

部首:

@interface UserFavoriteCell : UITableViewCell

// properties...

@end

实现:

@implementation UserFavoriteCell

@synthesize lblFlow, lblHeight, lblLastUpdate, lblMainTitle, gaugeID;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

在我的视图控制器中,我收到有关UserFavoriteCell实例化的警告,如下所示:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    UserFavoriteCell *cell = [tableView cellForRowAtIndexPath:indexPath]; // warning
    GaugeViewController *gvc = [[GaugeViewController alloc] init];
    [gvc setGaugeID:[cell gaugeID]];
    [self performSegueWithIdentifier:@"sgDetailFave" sender:self];
}

2 个答案:

答案 0 :(得分:0)

我不是百分百肯定,但你是否尝试过施放牢房?

UserFavoriteCell *cell = (UserFavoriteCell *)[tableView cellForRowAtIndexPath:indexPath];

答案 1 :(得分:0)

您写道:

  

由于UserFavoritesCellUITableViewCell的子类,因此我不确定为什么会收到此警告。有什么想法吗?

因为虽然每个橙子都是水果,但不是每个水果都是橙子......

cellForRowAtIndexPath:只知道该表包含UITableViewCell s(水果)。如果您知道,则返回的单元格为UserFavoritesCell(橙色),那么您可以使用强制转换声明:

... cell = (UserFavoritesCell *) ...

如果没有断言(并且编译器信任您使其正确),编译器只能知道它有UITableViewCell,因此警告。