2014-12-17 4 views
0

부모 ViewController viewDidLoad 이벤트에서 nib를로드하는 UITableViewCell의 하위 클래스가 있습니다. 여기에는 테이블 뷰가 있습니다. 이 UITableViewCell 안에 UITextView가 있습니다. 아이디어는 사용자가이 textView에 텍스트를 입력하고 단추를 누르면 NSUserDefaults에이 텍스트 (설문지 응답)가 저장됩니다.UITextView에서 텍스트를 UITableViewCell 내부에 유지하십시오.

내 문제는 내가 textviews에서 텍스트를 읽을 수 없다는 것입니다. 사용자가 텍스트를 입력하고 테이블 뷰를 위아래로 스크롤하면 텍스트가 보관되어 있으므로 어딘가에 메모리에 저장해야합니다. 이는 cellForRowAtIndexPath에서 발생합니다. 텍스트를 수집하는 경우이 동일한 메서드를 호출했지만 반환 된 셀은 nil입니다. 스크롤 할 때 텍스트가 유지되는 것처럼 보이지만 프로그래밍 방식으로 메서드를 호출하면 셀이 반환되지 않습니다. 이 텍스트를 추적하는 방법을 모르겠다. 또한 didEndDisplayingCell 메서드를 시도했지만 때로는 호출되지 않아 신뢰할 수 없다.

펜촉 등록 :

UINib *nib = [UINib nibWithNibName:@"QuestionCell" bundle:nil]; 
[[self tableViewOutlet] registerNib:nib forCellReuseIdentifier:cellIdentifier]; 

cellForRowAtIndexPath : 셀 내부의 텍스트 뷰 안의 텍스트를 얻기 위해 노력

QuestionCell *cell = [tableViewOutlet dequeueReusableCellWithIdentifier:cellIdentifier]; 
if (!cell.indexPath){ 
    cell.indexPath = indexPath;//Setup cell ... 

는 (반환이 보이지 않는 경우 nil을) :

QuestionCell *cell = (QuestionCell *)[tableViewOutlet cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]; 

답변

0

당신에게 적절한 텍스트가 입력 된 텍스트 필드를 유지하기 위해 tableview에 의존해서는 안됩니다. TableViewCell이 화면 밖으로 스크롤되면 곧 TableView에서 재사용되고 사용자가 입력 한 값은 덮어 쓰게됩니다.

대신에 ViewController를 UITextView의 델리게이트로 등록하고 모든 키를 누를 때마다 TableView의 데이터 소스 객체를 업데이트해야합니다. 그런 다음 필요할 때마다 해당 데이터 소스 개체에서 사용자가 입력 한 텍스트를 읽을 수 있습니다.

+0

텍스트가 스크롤 할 때 표시되므로 텍스트가 그대로 유지됩니다. –

관련 문제