2009-06-07 5 views
7

몇 가지 UITextField 및 UISwitch (Settings.app 기반)가있는 여러 사용자 정의 UITableViewCell을 사용하여 UITableView를 설정했습니다. 내 질문은 사용자가 탐색 모음에서 [저장] 단추를 클릭하면 이러한 텍스트 필드에 액세스하고 값을 저장하기 위해 컨트롤을 전환하는 가장 좋은 방법은 무엇입니까?아이폰 테이블보기 : 사용자 정의 TableViewCell의 텍스트 필드에 액세스하는 방법

답변

15

제 제안은 사용자 정의 UITableViewCell을 사용하지 않는 것입니다. 나는 당신의 방식대로 해왔지만 더 좋은 방법이 있습니다. 임의의보기를 할당 할 수있는 UITableViewCellaccessoryView 속성 (예 : UITextField 또는 UISwitch)을 사용합니다. 설정 응용 프로그램에서와 똑같이 나타납니다. 당신이 그것을 액세스해야하는 경우

그런 다음, 당신은 세포를 설정하고 그 값에 액세스하는 방법에 대한 조심해야한다, 그러나

NSString *text = ((UITextField *)cell.accessoryView).text; 

사용합니다. 셀이 화면을 벗어나면 제거되고 텍스트 필드에 액세스 할 수 없습니다. 당신이 당신의 세포를 설정할 때하고 싶은 것입니다 : 당신이 에드의 제안을 따르지 않을 경우

cell.accessoryView = nil; //Make sure any old accessory view isn't there. 
if (/*cell needs text field*/) { 
    UITextField *textField = [[[UITextField alloc] initWithFrame:frame] autorelease]; 
    textField.text = savedValue; 
    cell.accessoryView = textField; 
    [textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventValueChanged]; 
} 

... 

- (void) textChanged:(UITextField *)source { 
    self.savedValue = source.text; 
} 
+0

연락처 앱에 연락처 추가보기와 같이 텍스트 필드가있는 셀이 두 개 이상인 경우 어떻게됩니까? 각각의 뷰에 다른 메소드를 추가해야합니까? – Rodrigo

+0

http://stackoverflow.com/questions/3572377/iphone-how-to-read-the-data-in-uitableview/3572595#3572595 텍스트 필드 용 태그를 변경할 수 있으므로 한 가지 방법을 사용할 수 있습니다. 스위치를 켭니다. – Rodrigo

+4

UIControlEventEditingDidEnd를 사용합니다. UIControlEventValueChanged가 호출되지 않는 것 같습니다 :? – whatever0010011

0

, 당신은 아마 최고 사용자 정의 셀의 텍스트보기를 유지하고보기에 액세스하는 속성을 추가.

0

또한 사용자 정의 셀이 상위 수준보기 컨트롤러에 대한 참조를 유지하고 사용자가 값을 업데이트 할 때 알림을 보낼 수 있습니다. 기본적으로 UIKit에서 많은 라이브러리 객체가 사용하는 위임 패턴을 복사하십시오.

관련 문제