2011-09-03 4 views
0

I은 ​​"액세서리 버튼"을 클릭하면설정 텍스트

[cell setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton]; 

과 (이하 "cellForRowAtIndexPath"방법) 인스턴스화되고있는있는 UITableViewCell을 가지고, 나는 UIDatePicker가되고있다 셀의 텍스트를 선택한 날짜로 설정한다고 가정합니다. 피커가 나타나고 셀이 0이 아니지만 클릭 할 때까지 셀의 실제 텍스트 (날짜)를 볼 수 없습니다 (셀이 아닌 "액세서리 버튼"). "accessoryButtonTappedForRowWithIndexPath"라고 :

targetCell.textLabel.text = [formatter stringFromDate:_datePicker.date]; 

targetCell 메소드가 존재 인스턴스 변수 집합이다 : 여기

텍스트 설정되는 코드이다.

내가 말했듯이, 실제 셀을 클릭하면 선택기에서 선택된 날짜를 볼 수 있기 때문에 텍스트가 셀에 설정되어 있음을 알고 있습니다.

+0

이 문장은 어떤 방법으로 실행됩니까? ID 선택기 –

+0

'을 입력했는데 셀 값을 설정 한 후 테이블을 다시로드 했습니까? –

+1

의 "값 변경"이벤트를 처리하기 위해 생성 한 IBAction 내에 ' – mayuur

답변

1

현재 표시된 표보기 셀을 직접 수정하려는 것 같습니다. 이 방법으로 변경하더라도, 행이 보이지 않을 때 해당 셀이 다른 행에 다시 사용되기 때문에 여전히 작동하지 않습니다. 따라서 변경 사항이 손실되거나 잘못 표시됩니다.

이 관리하는 올바른 방법은에 :

  1. 변경 데이터 소스, 그리고 값이 날짜 선택
  2. 다시로드하거나 다시로드로 셀의 관점에서 선택되는 셀,
    • -[UITableView reloadData], 또는
    • 을 사용하여 전체 테이블 뷰는 해당 행 사용 -[UITableView reloadRowsAtIndexPaths:withRowAnimation:]

이러한 방법 중 하나를 사용하면 테이블보기 데이터 소스의 -tableView:cellForRowAtIndexPath:이 호출되어 새 셀로 행이 업데이트됩니다. 따라서 뷰 밖으로 스크롤해도 올바른 행의 날짜가 표시됩니다.

관련 문제