ViewとTable View Sectionを含む UITableViewController があります。
ビューには、テーブルのタイトルを示すラベルが含まれています。
私の問題は、スクロールにViewが含まれていることです。私が望むのは、Viewを静的に保ち (スクロールから除外)、 Tableのみをスクロールすることです。(私は静的セルを使用します)
ありがとう。
ViewとTable View Sectionを含む UITableViewController があります。
ビューには、テーブルのタイトルを示すラベルが含まれています。
私の問題は、スクロールにViewが含まれていることです。私が望むのは、Viewを静的に保ち (スクロールから除外)、 Tableのみをスクロールすることです。(私は静的セルを使用します)
ありがとう。
UITableView
のサブクラスなのでUIScrollView
:
- (void)viewDidLoad {
[super viewDidLoad];
// mySubview is an instance variable, declared in .h file
[self.tableView addSubview:mySubview];
// here goes the rest of your code
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if(scrollView == self.tableView) {
mySubview.frame = CGRectMake(mySubview.frame.origin.x, scrollView.contentOffset.y, mySubview.frame.size.width, mySubview.frame.size.height);
}
}
コードはWWDC'10または'11(覚えていません)から取得されたので、それが最も適切な方法であると確信しています。
説明:-viewDidLoad
ビューを作成し、それをtableViewのサブビューとして追加します。あなたはそれをすることができます-loadView
または-init
-それは問題ではありません。最も重要な行は-scrollViewDidScroll:
メソッドにあります。このメソッドは、ユーザーがscrollViewをドラッグするたびに呼び出されるためorigin.y
、サブビューcontentOffset.y
のをscrollViewに設定するだけです。
UITableViewController しないでください。UIViewController を使用して、UITableView オブジェクトの外部でビューを管理します。必要に応じて、UIViewControllerContainment を実装して、カスタム ビュー コントローラー内のさまざまなビューとさまざまなビュー コントローラーを管理することもできます。
UITableViewController の階層は
- UIView
-- UIScrollView
---- UITableView
アイテムを変更するとき、最初は UITableView にいるので、スクロールしたくない部分を UIView (scrollView の外側) に追加する必要があります。したがって、次のように super を数回呼び出す必要があります。
[self.superview.superview.view addSubview:viewThatDoesNotScroll];