2017-10-09 25 views
1

テーブルビューがあり、最初に表示されるときに常にスクロールさせたいと思っています。次のコードは正常に動作していましたが、iOS 11ではこれ以上動作しません.iOS 11のテーブルビューの上にスクロールするにはどうすればよいですか?それはviewWillAppearでありますようiOS 11のテーブルビューの先頭にスクロール

- (void)viewWillAppear:(BOOL)animated 
{ 
    [self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];  
} 

答えて

6

あなたはようscrollToRowAtIndexPath方法 を使用することができます -

にObjC

-(void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:true]; 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:true]; 
} 

SWIFT 4

override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(true) 
     tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: UITableViewScrollPosition.top, animated: true) 
    } 

はまた、さまざまな行&セクションの値を置くことによってindexpathでカスタム列を設定することができます。

0

見て、私は(ビューとテーブルがまだ表示されていないので)あなたが間違った場所にこれをやっていますかしら。 viewDidAppearでこれを試してください。

私の側では、[self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated: NO]をIBActionに接続すると、表内の最初の(または0番目の)セルにスムーズに移動します(スクロールアニメーションなし)ので、コールはiOS 11でも確実に機能します。

+0

はい、 '-viewDidAppear:'で動作しますが、テーブルビューが表示される前に一番上にスクロールさせます。これはiOS 11で壊れているようだ。 –

関連する問題