iOS(具体的にはiOS7)で次の観察された動作を誰でも説明できますか:
カスタム UITableViewCell クラスがあります。簡単にするために、layoutSubviews を含むクラスの関連メソッドを次に示します。
// CustomCell.h
@interface CustomCell : UITableViewCell {
UITextView *textView;
UIImageView *backgroundImage;
}
@property (nonatomic, retain) UITextView *textView;
@property (nonatomic, retain) UIImageView *backgroundImage;
@end
// CustomCell.m
- (void) layoutSubviews
{
[super layoutSubviews];
if (self.message.isIncoming)
{
self.textView.textColor = [UIColor whiteColor];
self.backgroundImage.image = [UIImage imageNamed:@"incomingImage.png"];
}
else
{
self.textView.textColor = [UIColor blackColor];
self.backgroundImage.image = [UIImage imageNamed:@"outgoingImage.png"];
}
}
設定方法は次のとおりです。
- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Message *chatMessage = [messages objectAtIndex:indexPath.row];
CustomCell *cell = (CustomCell*)[theTableView dequeueReusableCellWithIdentifier:CELL_IDENTIFIER forIndexPath:indexPath];
[cell setMessage:chatMessage];
return cell;
}
textView と backgroundImage の両方のコンテンツと配置は別の場所で行われ、100% 正しく行われます。
whiteText の受信メッセージが表示されるが、outgoingImage の背景を使用するシナリオを説明できる人はいますか? その 1 秒後、背景が incomingImage に正しく更新され、ユーザーは背景の変化を確認できます。
基本的に、テキストが正しく、textColor が正しいセルが再利用されていますが、backgroundImage が正しくない場合があります。UIImageView の .image プロパティの適用に何らかの遅延があるのだろうか? layoutSubviews が呼び出されていない場合、textColor が正しくないため、それが呼び出されたことはわかっています。UIImageView の画像プロパティだけが間違っているか、すぐに更新されないことがあります。
textView と backgroundImage はどちらも、カスタム UITableViewCell の contentView のサブビューとして追加したカスタム ビューであることに注意してください。