tableViewの上に置きたいUIScrollViewがあります。私はそれを私のテーブルビューのサブビューとして置きます - それが追加されると、テーブルビューはtableViewのcontentOffsetを使って関連するセクションまでスクロールされます。scrollview がスクロールされると、tableView はスクロールして一番上に戻ります。
どうすればこれを防ぐことができますか?
tableViewの上に置きたいUIScrollViewがあります。私はそれを私のテーブルビューのサブビューとして置きます - それが追加されると、テーブルビューはtableViewのcontentOffsetを使って関連するセクションまでスクロールされます。scrollview がスクロールされると、tableView はスクロールして一番上に戻ります。
どうすればこれを防ぐことができますか?
tableView セルのサブビューとして UIScrollView のインスタンスを追加する必要があります。例えば
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 30;}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 15) {
return 200;
}
return 44; }
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
if (indexPath.row == 15) {
UIScrollView *scroll = [[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 200)] autorelease];
scroll.backgroundColor = [UIColor greenColor];
scroll.contentSize = CGSizeMake(self.view.frame.size.width, 500);
[cell addSubview:scroll];
}
return cell; }
次に、viewDidLoadでtableViewのcontentOffsetを設定できます
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.tableView.contentOffset = CGPointMake(0, 400); }
また、UITableViewCell をサブクラス化することにより、scrollView でカスタム セルを作成することもできます。このチュートリアルで tableView セルをカスタマイズする方法を学びます。