我有一個UITableView,包含每個單元格中的一些視圖,其中一個視圖是UIImageView。 在cellForRow方法中,我使用圖像加載UIImageView,但有時,UIImageView只顯示黑屏。UIImageView黑色不一致
我認爲這可能是由於兩個原因 - 損壞的UIImage或內存問題。這個UIImage沒有被破壞(它始終是相同的UIImage),我甚至檢查了當我把一個手動破壞的圖像 - >它變成了白色!不黑...
我檢查是否有一些內存警告,ViewDidUnload啓動 - >什麼都沒有。即使在模擬器中模擬的內存警告也沒有,它與此無關。
有人有任何線索爲什麼會發生?
謝謝!
這是我的cellForRow方法。 基本上,它是一個UIWebView和UIImageView在頂部的單元格列表,當表格滾動時,我隱藏webview並顯示imageview,反之亦然。也許它與我的問題有關,但我懷疑它,因爲圖像是相同的,並且uiimagaview沒有被釋放。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
ImMailMessage *message = [_messages objectAtIndex:indexPath.row];
ImFullMessageTableViewCell *cell = (ImFullMessageTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"ImFullMessageTableViewCell"];
if (cell == nil)
{
cell = [[[NSBundle mainBundle] loadNibNamed:@"ImFullMessageTableViewCell" owner:self options:nil] objectAtIndex:0];
cell.delegate = self;
//add gestures
UIPinchGestureRecognizer *pinchGesture = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(cellPinched:)] autorelease];
[cell addGestureRecognizer:pinchGesture];
pinchGesture.delegate = self;
UIPanGestureRecognizer *panGesture = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(cellPanned:)] autorelease];
panGesture.minimumNumberOfTouches = 2;
[cell addGestureRecognizer:panGesture];
panGesture.delegate = self;
}
cell.threadState = _state;
cell.mailMessage = message;
UIImage *image = [self imageForMailMessage:message];
if (!image)
{
// if no image, put the webview and reload it.
cell.webView.mailMessage = message;
cell.webViewImageView.hidden = YES;
cell.webViewImageView.image = nil;
[cell.webView reloadMailMessage];
}
else // image exists!
{
cell.webViewImageView.image = image;
// replace the web view with the recived image.
[cell replaceWebViewWithImageView];
}
return cell;
}
你可以發佈你的cellForRow代碼嗎? – pdesantis 2012-08-12 15:15:04
爲了更好地解決您的問題,我們將需要您的cellForRowAtIndexPath代碼:方法 – Cezar 2012-08-12 18:19:01
嗨,添加cellForRow方法... – 2012-08-12 18:36:59