2014-05-10 54 views
0

我已經實現了一個子類SPCellUICollectionViewCell,我使用該子類在我的UICollectionViewController中創建單元。現在,當我收集一個單元格時,爲了使用它,我得到一個警告Incompatible pointer types initializing 'SPCell *' with an expression of type 'UICollectionViewCell *'如何修復UICollectionViewCell的子類的不兼容指針

這裏是一個例子。我的自定義單元格保存一個圖像,我想要更改alpha值。但是,在我分配細胞的地方,我得到了這個警告。

- (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath;{ 
    SPCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath]; 
    cell.thumbnail.alpha=0.6; 
} 

在此先感謝。

+0

'SPCell *電池=(SPCell *)[self.collectionView cellForItemAtIndexPath:indexPath]' – gWiz

回答

3

你只需要添加一個投讓編譯器知道你在做什麼 -

- (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath;{ 
    SPCell *cell = (SPCell *)[self.collectionView cellForItemAtIndexPath:indexPath]; 
    cell.thumbnail.alpha=0.6; 
} 
+0

真棒,我認爲這不是必須的,因爲'SPCell'實現了'UICollectionViewCell'的子類。但完美的作品,謝謝。 – kchromik

+0

不,您可以安全地將子類實例分配給超類變量--UICollectionViewCell * cell = mySPCellInstance',因爲所有的'UICollectionViewCell'方法和屬性都可用。由於子類屬性和方法可能不可用,因此不能將超類分配給子類變量 - 如果包含了該類型,那麼編譯器會信任您(儘管在運行時會出現錯誤) – Paulw11