17

UIViewController(サブビューとしてテーブルビューを含む)で次のことを行うにはどうすればよいですか?

私は最初にプレビューセクション(UIView)を表示するUIViewControllerを持っています

//Setup container for preview section
UIView *tempContainer = [[UIView alloc]initWithFrame:CGRectMake(0, 20, 320, 100)];
self.preview_answer_container = tempContainer;
self.preview_answer_container.backgroundColor = [UIColor clearColor];
[tempContainer release];
[self.view addSubview:self.preview_answer_container];

以下にUITableView(および検索バー)も追加しました

//setup tableview
UITableView *tempTable = [[UITableView alloc]initWithFrame:CGRectMake(0,44 ,320,self.view.frame.size.height - 44)];
self.tagFriendsTableView = tempTable;
self.tagFriendsTableView.delegate = self;
self.tagFriendsTableView.dataSource = self;
[tempTable release];

[self.view addSubview:self.tagFriendsTableView];

ここに画像の説明を入力してください

この設定では、スクロール領域は小さくなります(プレビューセクションの下の静的領域のみ)

1)ページ全体を上にスクロールできるようにコードを変更するにはどうすればよいですか?つまり、プレビューセクションとテーブルビューが一緒に上にスクロールします2)検索バーが一番上(ナビゲーションバーの下)に達すると全体のスクロールが停止します(スクリーンショットを参照)、ただし、UITableViewのコンテンツは引き続きスクロール可能です

ここに画像の説明を入力してください

編集:

UIScrollビューのコードを追加しました。しかし、私にとっては何も変わりませんでした。私のコードの何が問題になっていますか?

//setup scroll view
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

//Search
UISearchBar *tempBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 120 + 20, 320, 44)];
self.sBar = tempBar;
[tempBar release];
self.sBar.delegate = self;
self.sBar.tintColor = [UIColor colorWithHexString:@"#b6c0c7"];
self.sBar.placeholder = @"Search for FB and DM friends";

[scroll addSubview:sBar];

//setup tableview
UITableView *tempTable = [[UITableView alloc]initWithFrame:CGRectMake(0,144 + 20 + 20 ,320,self.view.frame.size.height - 144 - 20 - 20 - 44)];
self.tagFriendsTableView = tempTable;
self.tagFriendsTableView.delegate = self;
self.tagFriendsTableView.dataSource = self;
[tempTable release];

//Add the scroll view to the parent view
[scroll addSubview:self.tagFriendsTableView];

scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
[self.view addSubview:scroll];
[scroll release];
4

6 に答える 6

33

私はあなたのための解決策を持っています、

tableViewのみを使用するだけで十分です

  1. tableViewのHeaderViewとして「プレビュービュー」を作成します

  2. tableViewのセクションヘッダービューとして「検索バー」を作成します

あなたはそれを完璧にすることができます:)

于 2012-05-09T02:22:03.293 に答える
4

特別なものやカスタムのものは必要ありません。を使用しUITableViewてプレビューペインをに設定しtableHeaderView、検索フィールドをで使用するセクションヘッダーに設定tableView:viewForHeaderInSection:しますUITableViewDelegate

スクロールイベント中、テーブルヘッダーは上からスクロールします。セクションヘッダーはフロートし、表示されている場合はそのセクション全体が表示されたままになります。セクションが1つしかない場合は、セクションヘッダーが常に表示されます。

于 2012-05-09T02:33:22.397 に答える
2

または、次の手順を実行することもできます。1.tableViewのスクロールを無効にします。2.高さ制約をtableViewとそれに接続されたIBOutletに設定します。3.データをリロードする前に、テーブルの高さを計算します。heightConstraint.constant = (heightOfTheSingleTableViewCell) * numOfRows

于 2014-09-22T20:28:36.780 に答える
1

画面のサイズからナビゲーションバーを引いたサイズのUIScrollView内にUITableViewを埋め込む必要があります。UIScrollViewsの背景をclearColorに設定して、UITableViewの上のコンテンツが表示されたままになるようにします。

于 2012-05-09T01:03:33.433 に答える
1

はい、「tableView:viewForHeaderInSection」を使用できます。

于 2013-09-12T09:40:20.993 に答える
0
scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);

contentSizeが十分に大きくないため、スクロールできません。scrollViewの上にあるコンテンツの全長に合わせて長さを増やす必要があります。

于 2015-02-10T23:40:50.070 に答える