2009-08-16 7 views
1

먼저 작은 배경 정보 :스크롤하지 않는 tableViewHeader

UITableView가 포함 된 UIViewController가 있습니다. loadView 메서드 (테이블 초기화 후)에서 UIViewControllers 뷰를 다음과 같이 테이블 뷰로 설정합니다. self.view = tableView;

내가 원하는 것은 스크롤 할 때 테이블보기의 나머지 부분과 함께 스크롤하지 않는 화면 상단 (UITableView 이전)의보기입니다. UIView를 테이블 뷰의 tableViewHeader에 추가하려고 시도했는데 올바르게 표시되지만 나머지 테이블과 함께 스크롤됩니다.

쉽게 해결할 수 있습니까? 어느쪽으로 든, 해결책으로 어떤 암시든지 중대하게 평가된다. 편집

: 바닥 부분이 정지하고 화면의 나머지 부분은 jQuery과 여기서 내가 원하는

이 생각 어서, 주식 응용 프로그램 같은 것입니다. 유일한 차이점은 화면 상단에 고정 부분이 있어야한다는 것입니다.

답변

0

UIViewController의 뷰를 UITableView의 뷰로 설정하는 이유가 있습니까? UITableView를 하위 뷰로 처리하지 않는 이유는 무엇입니까? 그렇게하면 UITableView 위에 다른 것을 추가 할 수 있습니다. 다른 뷰, 백그라운드로 UIViewController 뷰가있는 빈 공간 등을 추가 할 수 있습니다.

+0

무엇을 제안합니까? UIView 및 UITableView UIViewController 추가하여 시도했다 : [self.view addSubview : headerView]; 및 [self.view addSubview : tableView]; 각 뷰는 적절한 프레임으로 초기화되었습니다. 이렇게하면 프로그램이 충돌하고 디버거가 표시됩니다. 95186 스택 프레임로드 중 ... – Erik

+0

흠, 오류를 발견했습니다. 나는 당신의 접근 방식을 일찍 시도했는데, 말했듯이 모든 것이 망가졌습니다. 그건 [super loadView]를 넣는 것을 잊었 기 때문입니다. 내 loadView 메서드에서. 그래서 당신의 접근 방식이 내가 결국 사용하게 될 것이기 때문에 이것에 대한 정확한 답을 줄 것입니다. – Erik

1

kmit는 이미 지적 했으므로 둘 이상의 하위 뷰를 쉽게 추가 할 수 있습니다. 너의 견해. 따라서 테이블보기를 직접 self.view으로 설정하지 말고 UIView (컨테이너로) 빈을 만들고 헤더보기뿐만 아니라 테이블보기를 해당보기의 하위보기로 추가하십시오. 프레임 속성을 통해 뷰의 범위를 제어 할 수 있습니다. 간단한 예 :

- (void)loadView { 
    UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
    [view setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth]; 

    // header view 
    HeaderView* headerView = [[HeaderView alloc] initWithFrame:CGRectMake(0, 0, 320, 182)]; 
    self.headerView = headerView; // in case you need the reference later on 
    [view addSubview:headerView]; 
    [headerView release]; 

    // table view 
    UITableView* tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 182, 320, 186) style:UITableViewStylePlain]; 
    [tableView setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth]; 
    tableView.delegate = self; 
    tableView.dataSource = self; 
    [view addSubview:tableView]; 
    self.tableView = tableView; 
    [tableView release]; 

    self.view = view; 
    [view release]; 
} 

수동으로 포함 UIView를 작성하는 대신, 당신은 당신의 loadView 구현의 시작 부분에 [super loadView]를 호출 할 수 있습니다.

관련 문제