特定のUITableViewCellをUITableViewでさらに多くの行を表示しながら画面に表示させる方法

私はテーブルビューで20行を持っている、私は(IBを使用して)画面の半分でUITableViewを設計(またはサイズを変更)し、半画面で私は特定のUITableViewCellに関連するものを表示しています。半画面に表示されるセルの詳細は、実行時に決定されます。私は2番目の最後のセルのビューをロードしている間に、セルが見えるようにしたい。

どうすればこれを達成できますか?

8

4 答え

全体のセルが可視であることを確認する最も簡単な方法は、セルの矩形が表示されていることを確認するためにtableviewに問い合わせることです。

[tableView scrollRectToVisible:[tableView rectForRowAtIndexPath:indexPath] animated:YES];

テストする簡単な方法は、それを - (void)tableView:didSelectRowAtIndexPath:に置くことです。 - セルをタップすると、部分的に非表示になっている場合はその場所にスクロールします。

16
追加された
実際、インデックスパスにスクロールする実際の方法よりもはるかに優れているようです
追加された 著者 thibaut noah,
これは私が探していたものです。しかし、1つの注意点...動的セル高さ(たとえば、didSelectRowAtIndexPath内の高さの変更)がある場合は、テーブルの下部に余分な埋め込みが必要です。
追加された 著者 Danny Sung,

UITableView class offers :

-(void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath
             atScrollPosition:(UITableViewScrollPosition)scrollPosition
                     animated:(BOOL)animated;

あなたが探しているもののようです。

NSIndexPath オブジェクトは、以下を使用して構築する:

+(NSIndexPath *)indexPathForRow:(NSInteger)row inSection:(NSInteger)section;
11
追加された

Swift 4 version of Nico teWinkel's answer, which worked best for me:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.scrollToRow(at: indexPath, at: .middle, animated: true) //scrolls cell to middle of screen
}
3
追加された