非自定义uitableviewcell样式被忽略

时间:2014-02-28 21:18:34

标签: ios objective-c uitableview

我没有做任何棘手的事情。使用Apple提供的默认模板中的标准TableView Controller,我只是将Style更改为“Subtitle”。这种变化反映在故事板中,但它仍然是模拟器中的基础。

对该项目的唯一修改是: - 我在导航控制器中嵌入了导航控制器 - 我在tableview中插入了一个搜索栏和搜索显示控制器 - 我添加了一个从网站导入XML数据的对象

这个项目是一个不同项目的裸骨(剥离)版本,现在在生产中处于活动状态,但仅使用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;
}

我重置了内容和设置,删除了派生数据,重新启动了我的计算机,轻拍了我的肚子并揉了揉脑袋(反之亦然)。我在这个论坛上看了十多篇帖子,但没有一篇论述这个具体问题。大多数关于单元格未正确显示的帖子涉及自定义单元格,但我没有使用自定义单元格。我甚至不知道如何实际。

我已达到了解决这个问题的能力极限。请帮忙。

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

继承了我为应用代表所做的更改,如果有帮助的话:

- (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;
}

1 个答案:

答案 0 :(得分:2)

字幕未显示的原因是因为您使用以下行注册了课程:

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

当您使用来自故事板的单元格时,无论是UITableViewCell还是您自己的自定义类,您都不应该注册任何内容。如果单元格仅在代码中定义,那么您注册该类,如果它是在xib文件中创建的,那么您将注册该笔尖。