1

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 のサブビューとして追加したカスタム ビューであることに注意してください。

4

0 に答える 0