2012-05-14 3 views
0

나는 UITextView를 가진 많은 행을 가지고있는 테이블 뷰 셀을 가지고있다. 이러한 UITextView에서 사용자는 값을 입력 할 수 있습니다.보이지 않는 UITableViewCell의 값을 어떻게 얻을 수 있습니까?

문제는 행이 숨겨져있을 때 행의 값을 가져 오려면 아무 것도 얻지 못한다는 것입니다.

NSString *cellValue = ((UITextField *)[[[self.table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]] contentView] viewWithTag:[self.table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]].tag]).text; 

나는 사용자가의 UITextField에 입력하는 값을 저장하는 생각을하지만, 한 사용자가 위임 textFieldDidEndEditing가 호출되고 있지 않은 계산을 수행하는 행을 클릭합니다.

안전한 방법으로이 값을 얻는 방법을 모르겠습니다.

답변

4

UITableView 뒤에있는 데이터 소스를 대상으로 지정해야합니다. UITableView는 디스플레이 메커니즘 일뿐 데이터를 가져 오는 데 필요한 기본 리소스가 아닙니다. 제목을 기준으로 셀의 색인을 가져올 수는 있지만 실제 데이터를 얻으려면 데이터 소스를보아야합니다. 더 나은 아직 데이터 소스 자체에 대한 모든 작업을 처리 할 수 ​​있다면 가능합니다. 처음에 테이블을 만들 때 데이터 소스는 내가 사용할 수있는 목록 또는 배열 일 것이라고 확신합니다. 뷰에 변수를 만들고 목록/배열을 유지해야만 모든 변수를 설정해야합니다.

행운을 빌어 요!

+0

내보기에 두 가지의 UITextField 속성을 만드는 것입니다. 그런 다음 셀을 만들 때 원하는 UITextView를 셀에 추가합니다. 그리고 데이터에 액세스해야 할 때 NSString * txtValue = self.txtField1.text; – FreelanceAr

0

재사용 가능한 세포가 가장 많이 발생합니다. 텍스트 필드가있는 셀이 화면에서 사라지면 재사용되므로 더 이상 액세스 할 수 없습니다. 당신이해야 할 일은 그들이 그것을 입력하고 어딘가에 저장 한 후에 바로 텍스트 필드의 가치를 잡는 것입니다. – textField:shouldChangeCharactersInRange:replacementString:을 사용하면 사용자가 문자를 텍스트 필드에 입력 할 때 문자열을 저장할 수 있습니다.

1

앞서 언급했듯이 일반적으로이 데이터 소스에 액세스하려면 UITableView 데이터 소스를 사용합니다.

즉, 대기열에서 제외 된 셀을 사용하기 때문에 예상 한 데이터가 표시되지 않을 수 있습니다. 셀 수가 적 으면 키가 섹션과 행의 일부 조합이고 자신의 캐시를 통해 뷰 계층 구조에 액세스하는 자신의 셀을 캐시하는 것을 고려할 수 있습니다.

0

tableViewdataSource을 원하는 IndexPath과 직접 참조하여 현재 표시되지 않는 행에 액세스 할 수 있습니다. (스위프트 3를 사용하는 경우)

이 같은 일을하여이 작업을 수행 할 수 있습니다 : 내가 무슨 짓을

UITableViewCell cell = self.tableView(self.tableView, cellForRowAt: indexPath)

관련 문제