0

2 つの UITableViewControllers があります。最初の UITableView では、ユーザーがセルを選択すると、新しい UITableViewController がプッシュされます。IB で両方の UITableViews を「グループ化」に設定しました。ただし、2 番目の UITableViewController がプッシュされると、「プレーンな」UITableView として表示されます。これを修正する方法はありますか?

健全性チェックとして、2 番目の UITableViewController が最初の UITableViewController からではなくプッシュされるようにコードを変更し、「グループ化」されているように見えます。これが起こっている理由はありますか?

2番目の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];
    }

}
4

1 に答える 1

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:)

更新、コードの後に​​追加

そこには 1 つの理由があります。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;
    }
}
于 2012-04-29T05:02:27.350 に答える