UITableViewController分组属性不起作用

时间:2012-04-29 04:48:46

标签: objective-c uitableview

我有两个UITableViewControllers。在第一个UITableView中,一旦用户选择了一个单元格,就会推送一个新的UITableViewController。我在IB中将两个UITableViews设置为“Grouped”。但是,当第二个UITableViewController被推送时,它显示为“普通”UITableView。有办法解决这个问题吗?

正如一个完整性检查,我更改了代码,以便第二个UITableViewController不是从第一个UITableViewController推送的,它看起来确实是“Grouped”。这有什么原因吗?

代码来自推动第二个UITableViewController的UITableViewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

   if ([cell.text isEqualToString:@"Long Term Disability"]) { 
    LongDisabilityTableView *ldvc = [LongDisabilityTableView alloc]; 
    [self.navigationController pushViewController:ldvc animated:YES];
   }
    if ([cell.textLabel.text isEqualToString:@"Short Term Disability"]) {

        ShortDisabilityTableView *sdvc = [ShortDisabilityTableView alloc]; 
        [self.navigationController pushViewController:sdvc animated:YES];
    }

}

1 个答案:

答案 0 :(得分:0)

如果您要推送UITableViewController,可以通过执行以下操作之一强制对表进行分组:

初始化

MyTableController *grouped = [[MyTableController alloc] initWithStyle:UITableViewStyleGrouped];

这需要添加到UITableViewController

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:UITableViewStyleGrouped]; /* This is where the magic happens */
    if (self) {
        self.title = @"My Grouped Table";
    }
    return self;
}

仔细检查

确保您没有将UITableView放在UIViewController上。

确保在代码中调用正确的控制器(来自didSelectRowAtIndexPath:

更新,在代码

之后添加

那么有一个原因,你没有使用init。请参阅上面的第一个示例。

您还应该将代码更改为:

/*  This assumes that your Long Term Disability cell is at index 0
    and that your Short Term Disability cell is at index 1. 
 */
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    switch ( indexPath.row )
    {
        case 0: /* @"Long Term Disability" */

            LongDisabilityTableView *ldvc = [[LongDisabilityTableView alloc] initWithStyle:UITableViewStyleGrouped]; 
            [self.navigationController pushViewController:ldvc animated:YES];
            break;

        case 1: /* @"Short Term Disability" */

            ShortDisabilityTableView *sdvc = [[ShortDisabilityTableView alloc] initWithStyle:UITableViewStyleGrouped];
            [self.navigationController pushViewController:sdvc animated:YES];
            break;
    }
}