0

私のコードは、基本的なUITableView基本クラスをプログラムで作成します。

@interface BaseTableViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
UITableView *tableView;
UITableViewStyle tableViewStyle;
}

loadViewメソッドは、tableViewの基本的なプロパティを設定します

- (void)loadView
{
[super loadView];
tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 338) style:tableViewStyle];
tableView.dataSource = self;
tableView.delegate = self;

UINavigationBar *navBar = self.navigationController.navigationBar;
navBar.barStyle = [UIUtils barStyle];
navBar.tintColor = [UIUtils tintColor];

if (tableViewStyle == UITableViewStyleGrouped) tableView.backgroundColor = [UIUtils tableBGColor];

[self.view addSubview:tableView];
}

次に、特定のコンテンツをテーブルに追加するため、この基本クラスをサブクラス化します。コンテンツが表示され、テーブルビューをスクロールしてビュー内のすべてのコンテンツを表示できます。その後、tableViewの高さを35増やすことにしました。サブクラスで、loadViewメソッドをオーバーライドして追加します。

- (void)loadView
{
[super loadView];
self.tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height + 35);
}

tableViewフレームの高さを調整した後、必要な量をスクロールして、すべてのテーブルコンテンツを表示できなくなりました。テーブルをタップしてドラッグするとコンテンツが表示されますが、テーブルを離すとコンテンツがスナップして表示されなくなり、見えなくなります。他のいくつかの投稿を調べましたが、解決策はtableView(そのUIScrollView基本クラス)のcontentSizeを増やすことであるようです。loadViewメソッドとviewDidLoadメソッドの両方で試しましたが、効果がありません。

self.tableView.contentSize = CGSizeMake(self.tableView.contentSize.width, self.tableView.contentSize.height + 35);

以前はこれと同様の問題がありましたが、tableViewはXibファイルにありました。IBでスクロールビューの高さを手動で増やすことになりましたが、それは今のところオプションではありません。明らかな解決策はありますか?

4

1 に答える 1

0

私は問題を解決しましたが、次のコードが修正されるのはなぜですか? テーブルビューのサイズを増やしていましたが、ビューのサイズは増やしていませんでした。両方を増やして、テーブル内のすべてのコンテンツをスクロールできるようにしました。

- (void)loadView
{
[super loadView];

// increase the size of the view and tableview by height of the statusbar frame which was removed...
self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height + 35);
self.tableView.frame = CGRectMake(0, 0, self.tableView.frame.size.width, self.tableView.frame.size.height + 35);

}

于 2012-04-24T16:50:24.773 に答える