2014-08-28 65 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