2010-04-16 8 views
1

UITableViewController에 하위 뷰를 추가하면 테이블 뷰 아래에있는 것처럼 보입니다. 내 서브 뷰를 잘못로드하거나 addSubview을 잘못된 위치에 불러 들일 수 있습니다. 내가 말하는 겁니다 하위 뷰는 또한 "저를 클릭"버튼을 포함 TabBar의 위의 빨간색 영역입니다 :Subview가 테이블 뷰 뒤에 나타납니다

screen shot http://i43.tinypic.com/30275gg.jpg

당신이 볼 수있는 중복 셀 라인의 종류가. 여기에 내 TableViewController 하위 뷰를 추가 할 수 있습니다 :

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    CGRect hRect = CGRectMake(0, 170, 320, 480); 
    HomeScreenOverlayView *homeView = [[HomeScreenOverlayView alloc] initWithFrame:hRect]; 
    [self.tableView addSubview:homeView]; 
    [homeView release]; 
} 

어떤 아이디어? 감사!

답변

2

addSubview를 호출하면 아마도 테이블보기에 추가 된 첫 번째보기 일 것입니다. 나중에 모든 셀 및 지원보기가보기 위에 추가됩니다.

가장 좋은 방법은 빈보기를 만들고 테이블보기와 오버레이보기를 모두 추가하여 오버레이보기가 테이블보기 위에 있는지 확인하는 것입니다.

조회수는 그림, 상호 작용 및 레이아웃의 3 가지 역할을 담당합니다. 이러한 역할 중 하나만 채우는 견해는 괜찮습니다.

+0

저에게 도움이되었습니다. 감사합니다. – Banjer

0

- (void)sendSubviewToBack:(UIView *)view 또는 - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index을 사용할 수 있습니다. addSubview은 항상 새보기를 앞에 놓습니다.
편집 : 죄송합니다. 질문을 잘못 읽고 나면, 하위보기를 앞에 놓고 싶은 것 같습니다.

4

나는이 문제를 직접 처리하여 테이블에보기를 추가하지 않고 테이블의 수퍼 뷰에보기를 추가하여 해결했습니다.

UIView *viewToAdd = [[UIView alloc] initWithFrame: self.view.frame]; 
[self.view.superview addSubview: viewToAdd]; 

이것은 전체 테이블을 마스킹 (예 : 화면로드)하려는 경우에 특히 유용합니다.

N.B. 일반적으로 뷰의 라이프 사이클에서 viewWillAppear :에 이것을 추가 할 것입니다.