2013-12-17 2 views
1

나는 UIViewController과 3 UITableView을 수직으로 배치했습니다. 테이블을 스크롤하는 것을 원하지 않습니다. 두 개의 테이블 (AB)의 높이가 내용에서 계산됩니다. 세 번째 (C)는 화면에 남아있는 공간에 맞게 크기가 조정됩니다. C의 경우 표시해야 할 행이 몇 개인 지 알 수 있으며 모든 셀을 정확하게 맞추기 위해 올바른 heightForRowAtIndexPath을 계산하려고합니다. 지금 고정 행 수와 테이블 높이에 대한 행 높이 계산

, 나는
  • B
  • 빼기의 전체 높이를 해제 빼기 A
  • 의 전체 높이를 빼기
    • 전체 화면의 높이를 가지고

      에 노력하고있어 일부 고정 된 빈 공간
    • C의 머리글을 뺍니다.
    • 내가 알아낼 방법에서 C

    세포의 숫자로 C의 바닥 글

  • 격차의 크기를 빼기이 나에게 내가 C의 각 개별 셀에 필요한 높이를 얻어야한다. 맞습니까? 내가 누락 된 것이 있습니까? 여기에 내가 사용하고 코드입니다 :이 프로그램을 실행할 때

    - (CGFloat) tableView:(UITableView *) heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
    
        if (tableView = self.tableC) 
        { 
    
         // self.lcA & self.lcB are NSLayoutContraints that I'm setting after I calculate how tall those tables need to be 
         // buffer is some white space padding I add to keep the tables from touching - it will be hardcoded to some constant before this code runs 
    
         CGFloat target = (self.view.bounds.size.height - self.lcA.constant - self.lcB.constant - [self tableView:tableView heightForHeaderInSection:indexPath.section] - [self tableView:tableView heightForFooterInSection:indexPath.section] - buffer)/[self tableView:tableView numberOfRowsInSection:indexPath.section]; 
    
        } 
    
    } 
    

    은, 그러나, 내가 명시 적으로 특정 뷰 컨트롤러에 heightForHeaderInSection를 구현하고 있지 않다 -[MyViewController tableView:heightForHeaderInSection:]: unrecognized selector sent to instance

    말, 충돌하지만, 컨트롤러 설정 MyViewController.h 파일의 경우 <UITableViewDataSource,UITableViewDelegate,...>입니다. 이 코드를 사용하려면 heightForHeaderInSection을 구현해야합니까? 그렇다면 구현할 수있는 방법이 있으며 일부 기본값 (예 : return [super heightForHeader];)을 반환하도록 강요합니다. 그렇지 않은 경우 왜이 오류가 발생합니까?

  • 답변

    1

    "- [자기있는 tableView :있는 tableView heightForFooterInSection는 : indexPath.section]"그리고 모든 물건, 난 당신이에 의해 헤더 높이에 액세스 할 수 있습니다 생각 :

    self.tableA.sectionHeaderHeight 
    

    바닥 글 :

    또한
    self.tableA.sectionFooterHeight 
    

    당신은 :

    self.tableA.tableHeaderView 
    self.tableA.tableFooterView 
    

    당신은 사과 문서에서이 모든에서 더 나은 모습을 가질 수 설명 : TableView Doc

    0

    나는 이것을 실제로 직접 시도한 적이 없지만 이것이 당신에게 갈 방향을 줄 수 있습니다. UITableViewUIScrollView에서 나옵니다. 따라서 UIScrollView의 모든 속성 (예 : scrollEnabled 스크롤 사용 안 함 및 contentSize)을 사용할 수 있습니다. 대신 일을

    +0

    네, 게시 한 코드에서 언급 한 NSLayoutConstraints를 설정하기 위해'contentSize'를 사용하고 있습니다. 스토리 보드에서 스크롤을 허용하지 않도록 상자를 체크했습니다. 그게 너무 돌봐. 내가 찾고있는 것은'C' 테이블에서 셀을 축소하여 내가 가진 공간에 모두 맞출 수 있도록하는 것입니다. 나는 뭔가를 놓치지 않는 한 저를 도울 수있는 'UIScrollView'에 어떤 것이 있다고 생각하지 않습니다. – GeneralMike

    1

    headerViewForSection은 컨트롤러에서가 아니라 tableView에서 호출해야하므로 UITableView의 메서드입니다. 또한 컨트롤러에 구현하여 반환 값으로 UITableViewAutomaticDimension을 사용해야하는 기본값을 반환 할 수 있습니다. 이 상수는 iOS 5에서부터 작동합니다.

    +0

    +1에 대한 'UITableViewAutomaticDimension' - 전에 들어 본 적이. 그것은 작동하지 않는 것 같아요 - 그냥'return UITableViewAutomaticDimension; '(내'heightForHeaderInSection :'의 유일한 줄)입니다. 나는'NSLog'를 넣었고'-1.00000'을 반환했습니다. – GeneralMike