2013-11-26 125 views
0

我在視圖控制器中有一個UITableView。表視圖使用名爲UserFavoritesCell的自定義單元格。當引用代碼這個小區,我得到以下警告:與自定義UITableViewCell不兼容的指針類型警告

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]; 
} 
+1

爲什麼你使用這個單元並且你沒有使用實際的數據源來獲取gaugeID?這種方法實際上會重新創建或從隊列中調用單元格,以檢索數據中已存在的屬性,我猜測? – Astri

回答

0

我不是100 %肯定,但你嘗試鑄造細胞?

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

您寫道:

由於UserFavoritesCellUITableViewCell一個子類,我不知道爲什麼我收到此警告。有任何想法嗎?

因爲儘管每一個橘子是一種水果,不是每一個果實是橙色...

cellForRowAtIndexPath:只知道表包含UITableViewCell S(水果)。如果您知道返回細胞是UserFavoritesCell(橙色),那麼你可以斷言,隨着鑄造:

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

沒有斷言(以及編譯器相信你得到它的權利)編譯器只知道它有一個UITableViewCell,因此警告。

相關問題