본문 바로가기
초짜 스크랩/초짜 IT

UITableView 버그(?)

by 구경거리 2011. 4. 22.
MyViewController  가 아래과 같이 3개의  서브뷰를 갖고,
각 서브 뷰는 UITableView 를 하나씩 갖는다.
@interface MyViewController : UIViewController {
    IBOutlet MySubView1*   subView1;
    IBOutlet MySubView2*   subView2;
    IBOutlet MySubView3*   subView3; 
}

이때 각 서브뷰의 UITableView  background 를 아래와 같이 설정하면... 
제일 처음 addSubview  한 subView1 의 UITableView 에만 background 가 먹는다. 

MyViewController  의 viewDidLoad
- (void)viewDidLoad {
    [self.view addSubview:subView1];
    [self.view addSubview:subView2];
    [self.view addSubview:subView3];
 
    UIImageView* imgBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test_bg.png"]];

    [subView1.tableView setBackgroundView:imgBG];
    [subView2.tableView setBackgroundView:imgBG];
    [subView3.tableView setBackgroundView:imgBG];
 
    [imgBG release]; 
}
다음과 같이 하면 정상적으로 동작한다.

- (void)viewDidLoad {
    [self.view addSubview:subView1];
    [self.view addSubview:subView2];
    [self.view addSubview:subView3];
 
    UIImageView* imgBG1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test_bg.png"]];
    UIImageView* imgBG2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test_bg.png"]];
    UIImageView* imgBG3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test_bg.png"]];

    [subView1.tableView setBackgroundView:imgBG1];
    [subView2.tableView setBackgroundView:imgBG2];
    [subView3.tableView setBackgroundView:imgBG3];
 
    [imgBG1 release]; 
    [imgBG2 release]; 
    [imgBG3 release]; 
}


왜 그럴까???
또하나 UITableView 의 backgroundView 를 viewDidLoad 가 아닌 다른 위치에서 설정하게 되면... 또 이상해진다.