2009-02-27 4 views
0

두 개의 태그가있는 레이블을 포함하는 UITableViewCell을로드하고 있습니다. 사용자는 다음 코드가 포함 된 현재보기를 종료하고 다른보기로 이동합니다. 이름 값이 설정되고 사용자가이보기로 돌아옵니다 (아래 코드). 다른보기에서 설정 한 이름을 이름 레이블에 지정합니다. 그래도 작동하지만 다른 레이블 위에 새 레이블이 잘못 정렬됩니다. 이 셀의 두 가지 버전을 가지고있는 것 같습니다. 확실하지 않습니다. 그런 종류의 행동을 유발할 수있는 것에 대한 제안 사항이 있습니까? 이 코드의 모양에서nib 및 참조 구성 요소를 통해 셀로드

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = nil; 
if(indexPath.section == 0) 
{ 
    cell = [tableView dequeueReusableCellWithIdentifier:@"CellNameIdentifier"]; 
    if (cell == nil) { 
     [[NSBundle mainBundle] loadNibNamed:@"CellentName" owner:self options:nil]; 
     cell = cellName; 
     //self.cellName = nil; 
    } 
} 
return cell; 
} 
- (void)viewDidAppear:(BOOL)animated { 
UILabel *startdate = (UILabel *)[cellName viewWithTag:1]; 
startdate.text = aName; 
[super viewDidAppear:animated]; 
} 

답변

1

는 당신이 더 많은 도면과 같은 제대로 가지 위에 다시 칠하기 실패 "내 다른 라벨 위에 잘못 정렬 새 레이블을"받고 있는지 가능성이 적습니다. 이 작업을 수행하려면 [tableView reloadData]를 호출하거나 관찰자를 사용해보십시오. 그러나 더 좋은 방법이 있다고 생각합니다.

개체를 다른보기로 전달하고 레이블 대신 개체를 수정 한 다음 해당 방식으로 데이터를 옮길 수 있어야합니다. 즉, 테이블 뷰에서 객체를로드하고 cellForRowAtIndexPath 내부에 셀을로드하고 객체 데이터를 사용하여 레이블 이름을 설정합니다. 두 번째보기를 누르고 속성으로 개체를 전달합니다. 이 속성을 해당 화면에서 원하는대로 조작하고 뷰를 팝하면 특별한 논리가 없습니다. 첫 번째 테이블보기에는 조작중인 개체 안에 저장된 내용이 다시 표시됩니다.

+0

나는 팔로우하지 않습니다. aName은 내 appdelegate 클래스에서 가져옵니다. 따라서 항상 인스턴스로 사용할 수 있습니다. 이 경우 두 번째보기로 개체 데이터를 전달할 필요가 없습니다. cellForRowAtIndexPath에 필요한 변경 사항은 "해당 객체에 저장된 내용이 모두 표시됩니다"라는 것입니다. – 4thSpace

+0

개체를 속성으로 전달하고 조작하는 자세한 코드 예제는 SQLiteBooks 사과 예제 프로젝트를 참조하십시오. – slf

관련 문제