0

まず、私がすべての提案を試したと言うとき、私を信じてください。しかし、私はそれらを再試行するつもりですので、コメント/回答してください。現在、私のコードは次のようになっています。

- (void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    CGRect frame = CGRectMake(tblView.frame.origin.x, tblView.frame.origin.y, tblView.frame.size.width, tblView.contentSize.height);

    [tblView setFrame:frame];
    [tblView reloadData];

    CGRect contentRect = CGRectZero;
    for (UIView *view in scrollView.subviews)
        contentRect = CGRectUnion(contentRect, view.frame);

    [scrollView setContentSize:contentRect.size];

    scrollView.frame = CGRectMake(scrollView.frame.origin.x, scrollView.frame.origin.y, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height);
}

私の@interfaceは:

@interface VH_HotelsListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
    IBOutlet UIScrollView *scrollView;
    IBOutlet UIImageView *imageView;
    IBOutlet UITableView *tblView;
    NSMutableArray *hotelArray;
}

ストーリーボードのテーブルビューを上のtblViewに関連付けました。テーブルビューは実行時にデータベースから入力されるので、問題はありません。

上からわかるように、テーブルビューのコンテンツサイズを取得し、フレームを同じ高さに調整しようとしています。ただし、スクロールビューのサイズがその高さに変更されるため、コンテンツサイズを正確に取得しています。残念ながら、テーブルビューには何もしません。設定NSLog(@"Table View Height: %g", tblView.frame.size.height)した直後はコンテンツサイズと同じ数になりますがTable View Height: 3166。つまり、機能しているように見えますが、実際には拡張されていません。

4

1 に答える 1

1

ええと、答えが出なかったので、プロジェクトを更新しました。ストーリーUITableViewボードを完全に削除し、コードで作成しました。

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
    tblView = [[UITableView alloc] initWithFrame:CGRectMake(0, 150, 320, 500) style:UITableViewStyleGrouped];
    tblView.dataSource = self;
    tblView.delegate = self;

    [scrollView addSubview:tblView];
}

次にviewDidAppear

- (void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    CGRect frame = CGRectMake(tblView.frame.origin.x, tblView.frame.origin.y, tblView.frame.size.width, tblView.contentSize.height);
    tblView.frame = frame;
    [tblView reloadData];
}

これは機能しているようです。

于 2012-11-06T16:07:40.257 に答える