2012-03-28 2 views
3

나는이 질문에 이미 "네가 할 수는 없다"라는 것을 알고 있지만, 여기에는 훌륭한 아이디어가있다는 희망이있다.UITableView 행을 사용자가 수정 한 내용으로 동적으로 성장시키는 방법

나는 몇 가지 다른 하위 뷰를 가진 UITableViewCell의 하위 클래스가 있습니다. 마녀 중 하나는 사용자가 편집 할 수있는 UITextField입니다. 그래서 자연스럽게 textField는 입력 된 텍스트와 함께 커집니다.

이제는 textField를 사용하여 tableview 행을 늘릴 수있는 방법이 있습니다.

저는 다양한 크기의 셀을 가지고 있으므로 - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath을 사용하는 방법을 알고 있습니다. 그러나 문제는 셀이 이미 tableview에있는 것을 수정해야한다는 것입니다.

은 또한 앞서 언급 위임 방법은 그냥 다음 내 데이터 모델에 데이터를 내가 것 퍼팅 후 편집 할 사용자에 대한 다른보기를 잡아 당겨의 생각 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

데이터 소스 대리자 메서드 전에 호출되는 점에 유의 테이블 뷰를 강제로 다시로드해야합니다. (특정 셀/행을 다시로드 할 수 있습니까?)

흥미롭게도 Apple이 iTunes U 앱에서 원하는 것을하고 있다고 생각합니다. 과제를 탭하면 펼쳐집니다. 나는 그들이 테이블 뷰를 사용하고 있다고 생각한다.

나는 많은 질문을하고 여기 이야기하지만, 나는 그것이 모두 관련되어 있고 내가 연구 한 것을 보여주기 위해서라고 생각한다. 저는 여러분 중 한 분이 천재의 뇌졸중을 당할 가능성을 찾고 있습니다.

이것은 다른 사람들에게도 도움이 될 수 있습니다. 왜냐하면 이것은 뜨거운 주제 인 것처럼 보이지만 아무도 질문을 잘하거나 좋은 대답을 얻지 못하기 때문입니다.

답변

5

사실,이 질문을 여러 번 받았으며 불가능하지 않습니다. "UITableView 사용자 정의 행 높이"또는 "UITableView 다중 행 UITextField"또는 유사한 검색하고 몇 가지 잘 - 답변 된 질문을 찾을 수 있습니다.

올바른 길을 가고 있습니다. 셀을 만들거나 구성하기 전에 해당 메서드가 호출 되더라도 높이를 tableView:heightForRowAtIndexPath:으로 반환해야합니다. 이것은 괜찮습니다. 셀을 갖지 않고 그 높이를 계산할 방법이 필요합니다. 다른 답변은 -[NSString sizeWithFont:constrainedToSize:] 및 관련 방법을 참조 ... 이것은 올바른 경로에 당신을 얻을 것입니다. 텍스트 필드를 편집하는 동안 높이를 변경

는 덜 분명하지만, 당신이

[tableView beginUpdates]; 
[tableView endUpdates]; 

테이블보기를 다시 heightForRowAtIndexPath:위한 그것의 위임을 요청하고 크기를 조정합니다뿐만 아니라 호출하는 경우 this answer는 ... 키를 가지고있는 셀을 일치 시키면 매끄러운 애니메이션으로 처리됩니다.

관련 문제