2014-02-28 3 views
0

나는 까다 롭지 않습니다. Apple에서 제공하는 기본 템플릿의 표준 TableView 컨트롤러를 사용하여 스타일을 "자막"으로 변경했습니다. 변경 사항은 스토리 보드에 반영되지만 시뮬레이터에서는 기본으로 유지됩니다. 비 - 사용자 정의 uitableviewcell 스타일은 무시됩니다

프로젝트의 유일한 수정

은 다음과 같습니다 - 나는 탭 컨트롤러 의 탐색 컨트롤러를 끼워 넣어 - 내가있는 tableview 에 검색 창 및 검색 디스플레이 컨트롤러를 삽입 - 나는 웹에서 XML 데이터를 가져올 수있는 객체를 추가 site

이 프로젝트는 현재 프로덕션에서 활성화되어 있지만 코어 데이터 대신 NSDictionary 만 사용하는 다른 프로젝트의 기본 본 (삭제 된 버전)입니다. 이 새로운 프로젝트는 치료 데이터를 배우려고 시도했지만이 성가신 문제를 지나칠 수는 없습니다.

코드를 업데이트하지 않고 내 셀 식별자를 "Cell"에서 "aeJobCell"로 변경했는데 앱이 성공적으로 실행되었습니다. 그것은 "Cell"의 셀 식별자가 없다고 불평하지 않았습니다. 그런 다음 올바른 식별자를 사용하고 있는지 확인하기 위해 코드에 테스트를 실시했습니다. 레이블이 올바르게 설정됩니다. 데이터는 셀에 표시되지만 자막은 표시되지 않습니다.

이미지 게시에 충분한 평판이 없습니다. 미안합니다. 코드를 붙여넣고 내가 할 수있는 한 최선을 설명합니다. 내가 리셋 콘텐츠 및 설정을했습니다

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = nil; 
    ImportedAEJob *aeJob = nil; 
    if (tableView == self.searchDisplayController.searchResultsTableView) { 
     cell = [tableView dequeueReusableCellWithIdentifier:@"aeJobCell"]; 
     aeJob = [self.searchResults objectAtIndex:indexPath.row]; 
    } else { 
     cell = [tableView dequeueReusableCellWithIdentifier:@"aeJobCell" forIndexPath:indexPath]; 
     aeJob = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    } 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"aeJobCell"]; 
     cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
    } 
    //[self configureCell:cell atIndexPath:indexPath]; 
    [self configureCell:cell forAEJob:aeJob]; 
    return cell; 
} 

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath 
{ 
    NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    // NSString *aJobNo = [[object valueForKey:@"aeJobNo"] description]; 
    // NSString *aDeliverTo = [[object valueForKey:@"aeDeliverTo"] description]; 
    cell.textLabel.text = [[object valueForKey:@"aeJobNo"] description]; 
    cell.detailTextLabel.text = [[object valueForKey:@"aeDeliverTo"] description]; 
} 

- (void)configureCell:(UITableViewCell *)cell forAEJob:(ImportedAEJob *)aeJob 
{ 
// NSString *aJobNo = aeJob.aeJobNo; 
// NSString *aDeliverTo = aeJob.aeDeliverTo; 
    cell.textLabel.text = aeJob.aeJobNo; 
    cell.detailTextLabel.text = aeJob.aeDeliverTo; 
} 

는 파생 삭제 된 데이터를 컴퓨터를 다시 시작, 내 배를 도청 내 머리 (비자 반대)을 문질러. 이 포럼에서 12 개 이상의 게시물을 읽었지만 그 중 하나만이이 특정 문제에 대해 논의하지 않았습니다. 제대로 표시되지 않는 셀에 관한 대부분의 게시물에는 사용자 정의 셀이 관련되어 있지만 사용자 정의 셀을 사용하지 않습니다. 나는 실제로 어떻게 해야할지조차 모른다.

이 문제에 대한 제 용량 한계에 도달했습니다. 도와주세요.

<----- EDIT -------> 

내가 만든 Heres는 변경 내용을 응용 프로그램의 대표는, 경우에이 도움이 :이 라인 클래스를 등록하기 때문에

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 
     UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 
     UINavigationController *navigationController = [splitViewController.viewControllers lastObject]; 
     splitViewController.delegate = (id)navigationController.topViewController; 

     UINavigationController *masterNavigationController = splitViewController.viewControllers[0]; 
     rushMasterViewController *controller = (rushMasterViewController *)masterNavigationController.topViewController; 
     controller.managedObjectContext = self.managedObjectContext; 
    } else { 
     UITabBarController *tabBarController = (UITabBarController *) self.window.rootViewController; 
     UINavigationController *navigationController = [[tabBarController viewControllers] objectAtIndex: 0]; 

     //UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; 
     rushMasterViewController *controller = (rushMasterViewController *)navigationController.topViewController; 
     controller.managedObjectContext = self.managedObjectContext; 
    } 
    return YES; 
} 
+0

IB에서 셀 유형을 "부제목"으로 변경 했습니까? 그렇지 않은 경우 문제가됩니다. 스토리 보드에서 셀을 만든 경우 해당 셀이 절대 0이 아니므로 if (Cell == nil) 절이 실행되지 않습니다. – rdelmar

+0

@rdelmar 나는 내가 잘 모르겠다. 스토리 보드가 IB라고 생각했습니다. 방금 이미 있던 세포의 스타일을 변경했습니다. 나는 그것을 만들지 않았다. 템플릿은 기본 스타일 셀을 무료로 제공하고 스타일을 자막으로 변경했습니다. 나는 필요한 다른 조치를 알지 못합니다. 나는 그것이 내 문제 일지 모르지만 나는 그 주제에 대해 충분한 지침을 찾지 못했다. – DSMagic

+0

예 스토리 보드는 IB (xibs와 함께)이며, 아니요, 셀 유형을 자막으로 변경하면 문제가 발생하지 않습니다. 셀 식별자를 "셀"로 변경할 수 있고 컴파일러가 오류를주지 않았다는 사실은 이상합니다. 그것은 내가 IB에서 설정 한 것과 다른 화면보기를 실제로 보았다고 생각하게 만듭니다. 나는 당신의 프로젝트를 보지 않고 어떻게 그것이 가능할 수 있는지 말할 수 없다. – rdelmar

답변

2

자막이 표시되지 않은 이유는 다음과 같습니다

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"aeJobCell"]; 

스토리 보드에서 가져온 셀을 사용할 때 UITableViewCell이든 사용자 지정 클래스이든 관계없이 사용자는 아무것도 등록하지 않아야합니다. 셀이 코드에서만 정의 된 경우 클래스를 등록하고 xib 파일에서 셀을 만든 경우에는 nib를 등록합니다.

+0

코드 줄을 추가 한 이유는 맞춤식 셀과 비슷한 문제에 관한 다른 게시물에 조언을 듣고 완전히 잊어 버렸기 때문입니다. 나는 내 코드의 그 부분을 보려고 생각조차하지 못했다. 대단히 감사합니다. – DSMagic

관련 문제