2010-06-01 9 views
1

사용자 등록을 위해 여러 텍스트 필드가있는 테이블을 만들 때 Three20을 사용하고 있습니다. Three20을 사용하여 가능한 두 가지 방법을 찾았습니다. 첫 번째 메서드는 TTSectionedDataSource의 tableDidLoadModel 메서드를 사용하여 수동으로 UI 구성 요소를 추가하고 두 번째 메서드는 미리 형식이 지정된 UI 구성 요소가 포함 된 사용자 지정 항목을 추가합니다. 두 번째 옵션은 더 복잡한 방식으로 보이고 개별 필드에 액세스하는 데 어려움을 겪고 있습니다. 따라서 한 필드가 사용자 이름의 텍스트 필드 인 경우 사용자 이름을 제출하려면 해당 필드에 액세스해야하며 쉬운 대답이없는 것 같습니다. 첫 번째 옵션은 많은 유연성을 제공하지만 개별 행 높이를 설정하는 방법을 알 수는 없습니다. 하나의 행은 텍스트 필드 위에 레이블을 가질 수 있으며, 다른 행에는 이미지가있을 수 있습니다. TTSectionedDataSource에서 사용할 수있는 메서드가 있나요? 각 행의 높이를 설정할 수 있습니까? 지금까지 메소드 1을 사용하고 레이블 필드와 텍스트 필드를 포함하는 UIView를 작성했습니다. 항목 배열에 추가되기 전에 uiview의 프레임을 변경해 보았지만 아무 효과가 없습니다.Three20 TTSectionedDataSource 행의 높이

아이디어가 있으십니까?

답변

1

나는 그것을 알아낼 수도 있다고 생각합니다. 이 솔루션이 정확한지 확실하지 않지만 작동하는 것 같습니다.

먼저 내 사용자 지정 항목 클래스에서 데이터 원본을 대리인으로 전달합니다. 위임자가 항목의 일부로되었으므로 위임자로 내 텍스트 필드에 전달할 수 있습니다. 내 데이터 소스 클래스에 UITextFieldDelegate를 포함하는 한 내 텍스트 필드에 델리게이트로 응답합니다. 그래서 내용이 에서으로 바뀌 었습니다. 그때 해당하는 사용자 정의로 셀을 입력 indexPath.row를 사용하여 행을 확인할 수 있습니다

- (void)tableView:(UITableView*)tableView cell:(UITableViewCell*)cell willAppearAtIndexPath:(NSIndexPath*)indexPath 

: 나는 데이터 소스에서 텍스트 필드의 내용을 변경하려는 경우

, 나는 방법을 활용할 수 있습니다 세포 계급. 거기에서 내 셀 클래스의 공용 메서드에 액세스 할 수 있습니다. 그래서 저는 텍스트 필드에 대한 참조를 리턴하는 것을 만들었습니다. 그래서 내가 말할 수 있습니다 :

[[(MyCustomTextFieldCell *)cell theTextField] setText:@"hello world"]; 

다음 단계는 현지 바르에 할당하는 것입니다 그리고 내가 언제든지 액세스 할 수 있어야 겠지.

텍스트 필드의 내용을 수정할 수있는 주된 이유는 특정 인스턴스에서 텍스트 필드를 클릭하면 선택기가 나타나서 선택기의 결과가 형식화되어 텍스트 필드에 다시 삽입된다는 것입니다.

내 접근 방식이 너무 복잡한 지 알려주세요. 아마도 샘플을 만들어 모든 사람이 찢어 지도록 게시하고 내가 바보라고 말하면 더 좋은 방법이있을 것입니다.

감사합니다. howie