2009-10-17 5 views
1

이름이 한 행, 주소가 하나, 전자 메일이 하나, 연령이 하나 ... 등과 같이 여러 이질적인 행을 포함하는 상세 뷰에 대한 완벽한 레이아웃 전략을 본 적이 한번도 없습니다. 연락처의 이름 편집보기와 같지만 더 복잡합니다.이기종 행 디테일 뷰에 가장 적합한 레이아웃

분명히 완벽한 "테이블"이며 UITableView의 그룹 스타일은 행의 일반 목록보다 바람직합니다 (주소록 편집보기 참조).

그러나, jQuery과는 이질성을 처리 할 수있을만큼 유연하지 : jQuery과 경우이 문제가 완벽하게 해결 될 수

switch (row) { 
    case kNameRowIndex: 
     nameField.text = name; 
     break; 
    case kaddressRowIndex: 
     addressField.text = address; 
     break; 
    case kEmailRowIndex: 
     emailField.text = email; 
     break; 
    case kAgeRowIndex: 
     ageField.text = age; 
     break; 
    ... 
    default: 
} 

다음 tableView:cellForRowAtIndexPath: 방법은 다음과 같이 행의 다른 종류의 복잡한 지점으로 엉망이 될 것입니다 인터페이스 빌더에서 정적 UITableViewCells로 채울 수 있습니다. 불가능한 것처럼 보입니까?

이렇게 자세히보기에 가장 적합한 레이아웃 전략은 무엇입니까?

+0

UITableView가 충분히 유연하지 않고 "엉망"이라고 생각하는 이유를 설명 할 수 있습니까? –

+0

Otto, 나는 아주 간단한 예제 인 비 대한 switch 문을 추가했습니다. – an0

답변

1

인터페이스 작성기에서 정적 UITableViewCells를 레이아웃하는 것은 전혀 불가능하지 않습니다. UIAddressDetailsView - 국가, 지역, 도시, 거리, 숫자 등 UINameDetailsView - 이름, 성, 이니셜,

보기 컨트롤러에서 사용할 다른 셀에 대해 IBOutlets를 설정할 수 있습니다. 보기 컨트롤러의 XIB 파일에서 기본보기에 포함되지 않은 UITableView 셀을 정의하고 해당 콘센트에 연결합니다. 뷰가로드되면 사용자 정의 UITableViewCell이 반환 될 수 있습니다.

까다로운 부분은 heightForRowAtIndexPath를 구현해야 고정 된 셀의 프레임 높이를 반환 할 수 있다는 점입니다.

+0

좋은 지적. 하지만 내가 원하는 것은 IB에서 정적 UITableViewCells를 레이아웃하는 것뿐만 아니라 IB에서 정적 UITableView를 레이아웃하는 것, 즉 정적 UITableView에 정적 UITableViewCell을 채우기 위해 UITableViewDataSource를 없애기 위해서입니다. – an0

+0

왜? 모든 데이터가 정적 셀이나 높이 (높이와 같은)에 대한 세부 정보를 반환하면 무엇이 중요합니까? IB 내부의 UIScrollView에 구성 요소를 추가하는 대신 UITableView를 서브 클래 싱하려는 이유는 무엇입니까? 기본적으로 IB의 표에 데이터를 추가 할 수는 없지만 큰 화면 이동보기를 만들어 부품을 계속 추가 할 수 있습니다. 하지만 테이블에서 행을 정의하는 것이 더 낫습니다. 왜냐하면 UITableView에는 선택 항목과 헤더 및 메모리 사용에 대한 여러 가지 유용한 기능이 있기 때문입니다. –

0

레이아웃의 재사용 가능한 섹션에 대해 사용자 지정 UITableViewCell을 만들고 필요할 때 해당 큐에서 큐를 빼냅니다. tableView : cellForRowAtIndexPath :. UITableView를 사용하고 싶지 않은 경우 각 데이터 그룹에 대해 사용자 정의 UIView를 사용하십시오. 적절하게 수집, 명명 및 구성해야 할 수 있습니다. 예 : UIPasswordAndEMailView ...

관련 문제