0

我的 UITableView 有一个真正的问题,让我带您了解一下。

我的故事板中有一个 UITableViewController,它有四个不同的原型单元,每个单元都有自己的标识符。

然后我在我的课堂上有这个控制器:

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

    if (indexPath.section == 0) CellIdentifier = @"name";
    else if (indexPath.section == 1) CellIdentifier = @"name";
    else if (indexPath.section == 2 && indexPath.row == 0) CellIdentifier = @"segment";
    else if (indexPath.section == 2 && (indexPath.row == 1 || indexPath.row == 2 || indexPath.row == 3)) CellIdentifier = @"switch";
    else if (indexPath.section == 3) CellIdentifier = @"segment";
    else if (indexPath.section == 4) CellIdentifier = @"segment2";
    else if (indexPath.section == 5) CellIdentifier = @"name";
    else if (indexPath.section == 6) CellIdentifier = @"name";
    else if (indexPath.section == 7) CellIdentifier = @"name";

    GuestDetailCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[GuestDetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    //Configure my cells here, like so:
    if (indexPath.section == 0)
    {
        cell.title.text = @"title";
    }
    else if (indexPath.section == 1)
    {

    }
    //etc

    return cell;
}

我认为这就是我的问题所在,因为我已经成功使用了一些不同的代码(如果您可能需要查看它,我会添加这些代码,请告诉我。

表格中显示了正确数量的单元格和正确数量的部分,如果您选择一个单元格,它会将您带到正确的子视图控制器,但实际的单元格本身只是空白。为什么他们都可能返回零?

现在显示视图时,所有单元格都是空白的。cell = [[GuestDetailCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];这似乎被一遍又一遍地调用,与配置显示的我的单元格相反。

我通过调用此代码来获得此视图:

- (void)addNewGuest
{
    newGuestViewController *addGuestViewController = [[newGuestViewController alloc] initWithStyle:UITableViewStylePlain];
    addGuestViewController.delegate = self;

    //Create a new managed object context for the new guest -- set its persistent store coordinator to the same as that from the fetched results controller's context.
    NSManagedObjectContext *addingContext = [[NSManagedObjectContext alloc] init];
    self.addingManagedObjectContext = addingContext;

    [addingManagedObjectContext setPersistentStoreCoordinator:[[fetchedResultsController managedObjectContext] persistentStoreCoordinator]];

    addGuestViewController.guest = (GuestInfo *)[NSEntityDescription insertNewObjectForEntityForName:@"GuestInfo" inManagedObjectContext:addingContext];

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:addGuestViewController];

    [self.navigationController presentModalViewController:navController animated:YES];
}

任何想法,或需要更多信息?

谢谢。

4

1 回答 1

0

这让我发疯了。在客户面前难倒了我。jrturton 的评论有我需要的答案。最初忽略了这个问题,因为它没有任何答案。发布 jrturton 的评论作为答案,这样它就不太可能被忽视。这是他的评论(答案):

您必须在情节提要中设置与在代码中使用的相同的重用标识符。如果这样做,出队将始终返回一个单元格,而您永远不需要实例化一个单元格。

于 2013-04-17T01:07:11.627 回答