2

プログラムでビューを作成しようとしています。私が望む結果は、テーブルビューを内部に持つスクロール ビューです。そして、このテーブルビューの下にいくつかのボタンを追加したい

これを行う方法が正確にはわかりませんが、これを試しましたが、うまくいきません:

- (void)loadView {
    [super loadView];

    tableView = [[UITableView alloc] initWithFrame:[[self view] bounds] style:UITableViewStyleGrouped];
    [tableView setDelegate:self];
    [tableView setDataSource:self];

    scrollView = [[UIScrollView alloc] initWithFrame:[[self view] bounds]];
    //[scrollView setBackgroundColor:[UIColor blackColor]];
    [scrollView setBouncesZoom:YES];

    deconnectButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
    [deconnectButton setTitle:@"Deconect" forState:UIControlStateNormal];
    [deconnectButton setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];

    //[deconnectButton addTarget:self action:action forControlEvents:UIControlEventTouchUpInside]; 
    deconnectButton.frame = tableView.frame;
    NSLog(@"Tableview frame : %@", NSStringFromCGRect(tableView.frame));

    [scrollView addSubview:deconnectButton];

    [scrollView addSubview:tableView];


    [[self view] addSubview:scrollView];


}

私は何が欠けているか、間違っていますか?

4

3 に答える 3

2

注意すべきことの 1 つは、UITableView は UIScrollView のサブクラスであるため、UITableView のサイズを単にスクロールさせる場合とは異なる方法で管理する必要があることです。

あなたのコードは tableView と deconnectButton を同じサイズに設定しているように見え、そのサイズは scrollView スーパービューのサイズです。これには、ボタンを覆い隠すtableViewの影響があると予想されます。

あなたの説明に基づいて、テーブルの内容に基づいて必要なテーブルのサイズを計算し、それに応じてフレームを設定する必要があるようです。次に、ボタンのフレームをそのすぐ下に設定します。また、contentSize プロパティを使用して scrollView のサイズを設定する必要があります。このシナリオの問題は、常に scrollView のサイズとボタンの位置を tableView のサイズと同期させておく必要があることです。

テーブルの最後の行をボタンにして、外側のスクロール ビューを削除することを検討してください。最終的には、コードが少なくなる可能性があります。

于 2009-07-24T23:11:41.767 に答える