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];
私はあなたのための解決策を持っています、
tableViewのみを使用するだけで十分です
tableViewのHeaderViewとして「プレビュービュー」を作成します
tableViewのセクションヘッダービューとして「検索バー」を作成します
あなたはそれを完璧にすることができます:)
特別なものやカスタムのものは必要ありません。UITableView
を使用し、プレビューペインをtableHeaderView
に設定し、検索フィールドをUITableViewDelegate
のtableView:viewForHeaderInSection:
を使用してセクションヘッダーに設定します。
スクロールイベント中にテーブルヘッダーが上からスクロールします。セクションヘッダーはフロートし、表示されている場合はそのセクション全体で表示されたままになります。セクションが1つしかない場合は、セクションヘッダーが常に表示されます。
または、次の手順を実行することもできます。1.tableViewのスクロールを無効にします。 2.高さ制約をtableViewとそれに接続されたIBOutletに設定します。 3.データを再ロードする前に、テーブルの高さを計算します。 heightConstraint.constant = (heightOfTheSingleTableViewCell) * numOfRows
画面のサイズからナビゲーションバーを引いたサイズのUIScrollView内にUITableViewを埋め込む必要があります。 UIScrollViewsの背景をclearColorに設定して、UITableViewの上のコンテンツが表示されたままになるようにします。
scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
ContentSizeが十分に大きくないため、スクロールできません。 scrollViewの上にあるコンテンツの全長に長さを増やす必要があります。
はい、「tableView:viewForHeaderInSection」を使用できます。