2014-08-28 64 views
0

我有一個很奇怪的問題,涉及scrolling a UITableView影響UITableview內容的彈跳窗口?

我有一個TableView填充collectionMPMediaItems:歌曲在一個相冊。在IB中,我有一個UIImageView,如果歌曲存儲在雲中,那麼它將顯示indicator。當填充TableViewcell,我檢查,如果這首歌是iCloud,如果不是UIImageView完全去除,如果是這樣,則ImageView分配一個image

UIImageView *isCloudIcon = (UIImageView *)[self.view viewWithTag:105]; 

if ([[rowItem valueForProperty:MPMediaItemPropertyIsCloudItem] boolValue] == NO) { 
    [isCloudIcon removeFromSuperview]; 
} else if ([[rowItem valueForProperty:MPMediaItemPropertyIsCloudItem] boolValue] == YES) { 
    isCloudIcon.image = [UIImage imageNamed:@"iCloudIcon.png"]; 
} 

這顯示最初只是罰款,但它也是在那裏怪異開始。如果全部歌曲存儲在本地,一切正常。同樣,如果所有歌曲都存儲在雲中,則一切正常。但是,如果它是一個組合,那麼它將在最初正確顯示,但隨着您scroll updowniCloud圖標image的視圖開始奇蹟般地消失。只是通過玩它,我已經能夠確定它與彈跳卷軸有關。每當TableView彈出滾動它刪除一個ImageView,似乎沒有理由。關閉反彈解決了這個問題,但這是令人不安的,我寧願留下它。

有沒有人遇到過類似的行爲?提前致謝。

回答

0

您的代碼是從您的UITableViewCell子類?
如果是這樣,你的問題不關心彈跳,但問題是UITableViewCellisCloudIcon刪除被重用。

你應該隱藏它們而不是刪除。

代碼應和:

if ([[rowItem valueForProperty:MPMediaItemPropertyIsCloudItem] boolValue] == NO) { 
    isCloudIcon.hidden = YES; 
} else if ([[rowItem valueForProperty:MPMediaItemPropertyIsCloudItem] boolValue] == YES) { 
    isCloudIcon.image = [UIImage imageNamed:@"iCloudIcon.png"]; 
    isCloudIcon.hidden = NO; 
} 
+0

唉,你顯然是正確。這解決了它。當然,它會打破我的另一個問題的解決方法,但並不總是這樣... – 2014-08-28 14:10:38