2013-10-04 3 views
1

StoryBoard에서 Xcode 5를 사용하여 iOS 7로 변환하는 iOS 6 앱이 있습니다. 내가 아이폰 OS 7로 앱을 변환 한 후에 테이블 뷰 컨트롤러에 커스텀 UITableViewCell을 추가하기로 결정하기 전까지는 모든 것이 잘 동작했다. 나는 이것을하기 위해 일반적인 코드를 만들었지 만, 앱을 실행할 때 예기치 않은 결과를 얻는다. 한 셀 행의 일종이며, 그 뒤에 빈 셀 행으로 보이는 것을 보여주는 tableview 위에 부동 소수점을 정렬합니다. 테이블 행을 스크롤 할 때 배경에서 스크롤되는 것을 볼 수 있으며 스크롤하는 동안 하나의 뷰 셀 행에 표시된 데이터가 변경됩니다 (첨부 된 이미지 참조). 그러나 빈 행처럼 보이는 부분을 클릭하면 올바르게 작동하고 세부보기 컨트롤러에 올바르게 연결됩니다. 나는 다른 맥북에서 Xcode 4.6을 사용하여 iOS 6에서 앱을 똑같이 변경했다. 올바르게 작동한다 (첨부 된 이미지 참조). 그래서 iOS 7이 iOS 6에서와는 다른 방식으로 uitableviewcell 클래스를 처리하거나 iOS 7 앱의 코드에서 실수를 범하고이를 실현하지 못하고 있다고 생각합니다.iOS 7 UITableViewCell 문제

다음은 제대로 작동하지 않는 아이폰 OS 7 코드 : 여기

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellIdentifier = @"Cell"; 

    ExhibitorsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (!cell) { 
     cell = [[ExhibitorsViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 

    if (tableView == self.myTableView){ 
    NSManagedObject *object = [self.objects objectAtIndex:indexPath.row]; 
    cell.nameLabel.text = [object valueForKey:@"name"]; 
    NSString * booth = [NSString stringWithFormat:@"Booth Number: %@", [object valueForKey:@"boothLabel"]]; 
    cell.boothNumberLabel.text = booth; 
    } 
    else{ 
    NSManagedObject *object = [results objectAtIndex:indexPath.row]; 
    cell.nameLabel.text = [object valueForKey:@"name"]; 
    NSString * booth = [NSString stringWithFormat:@"Booth Number: %@", [object valueForKey:@"boothLabel"]]; 
    cell.boothNumberLabel.text = booth; 
    } 

    return cell; 
} 

이 같은 것 같다,하지만 난 그것을 볼 다른 사람의 눈을 필요로 추측 나에게 (작동하는 아이폰 OS (6) 코드는) :

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
    static NSString *simpleTableIdentifier = @"Cell"; 


    ExhibitorsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 


    if (!cell) { 
     cell = [[ExhibitorsViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 

    if (tableView == self.myTableView){ 
    NSManagedObject *object = [self.objects objectAtIndex:indexPath.row]; 
    cell.nameLabel.text = [object valueForKey:@"name"]; 
    NSString * booth = [NSString stringWithFormat:@"Booth Number: %@", [object valueForKey:@"boothLabel"]]; 
    cell.boothNumberLabel.text = booth; 
    } 
    else{ 
    NSManagedObject *object = [results objectAtIndex:indexPath.row]; 
    cell.nameLabel.text = [object valueForKey:@"name"]; 
    NSString * booth = [NSString stringWithFormat:@"Booth Number: %@", [object  valueForKey:@"boothLabel"]]; 
    cell.boothNumberLabel.text = booth; 
    } 

    return cell; 
} 

Here는 아이폰 OS 7 응용 프로그램에서 무슨 일이 일어나고 있는지의 스크린 샷이다.

Here (이것은 사용자 지정 UITableViewCell 변경을 수행하기 전의 모습입니다.)

+0

그래서보기 컨트롤러와 사용자 정의보기 셀을 처음부터 다시 시작하면 문제를 해결할 수 있는지 다시 만들었습니다. 그렇지 않습니다. 그러나 모든 것이 xcode 5 스토리 보드를 가리키며 사용자 정의 uitableviewcell에서 어떻게 보이는지 보여줍니다. 이상한 일을하고있어. 셀을 만들고 uilabel iboutlet에 연결된 셀 속성을 올바르게 연결하지만 viewcell 레이아웃에 uilabels가 제대로 포함되어 있지 않습니다. 마치 테이블 뷰 위에 또 다른 뷰가있는 것처럼 보이기 때문에 뷰에 uilabels이 놓여있어 마치 시뮬레이션에서 본 테이블 위에 떠있는 것처럼 보입니다. – bachma0507

답변

0

알아 냈습니다. 셀 경계가 강조 될 때까지 필자는 uitableviewcell 위에 약간의 uilabel을 드래그해야했습니다. 이렇게하면 레이블이 셀 위에 배치됩니다. 그런 다음 레이블을 다시 뷰 셀로 이동해야했습니다. xcode 4.6에서 그렇게하지 않아도됩니다. 하지만 오.