UITableViewがあり、各セルにいくつかのビューが含まれています。ビューの1つはUIImageViewです。cellForRowメソッドで、UIImageViewに画像を読み込んでいますが、UIImageViewに黒い画面が表示されることがあります。
UIImageの破損またはメモリの問題の2つの理由が考えられます。
UIImageは破損しておらず(常に同じUIImageです)、手動で破損した画像を配置したときの動作も確認しました->白くなります!黒ではない...
いくつかのメモリ警告があるかどうかを確認します。ViewDidUnloadの起動->何もありません。シミュレータでシミュレートされたメモリ警告でさえ、何も、それはそれとは何の関係もありません。
なぜそれが起こっているのか誰かが何か手がかりを持っていますか?
ありがとう!
これが私のcellForRowメソッドです。基本的に、これはUIWebViewとUIImageViewが上にあるセルのリストであり、テーブルがスクロールすると、Webビューを非表示にして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;
}