私のアプリでは、2つのtableViewを並べて表示します。ユーザーがスクロールすると、2つ目のスクロールが同時に行われるので、2つの異なる列を持つ1つの表のように見えます。私はこれをやっていく方法について少し迷っています。iPhone - 2つのUITableViewを対称にスクロールする方法
おかげで、 グレッグ
私のアプリでは、2つのtableViewを並べて表示します。ユーザーがスクロールすると、2つ目のスクロールが同時に行われるので、2つの異なる列を持つ1つの表のように見えます。私はこれをやっていく方法について少し迷っています。iPhone - 2つのUITableViewを対称にスクロールする方法
おかげで、 グレッグ
あなたはUIScrollViewDelegate
に見たいと思うでしょう - あなたは2つのスクロールビュー、とBを持っていると言います。
setContentOffset
で、その後オフセットを取得するには、スクロールビュー
の
scrollViewDidScroll
デリゲートメソッドを使用し、。
デリゲートメソッドを設定した後は、実際には2〜3行のコードにしないでください。
便宜上、UITableViewはUIScrollViewのサブクラスです。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
あなたがそのメソッドを実装する場合、あなたはscrollView
引数のcontentOffset
プロパティを取得することができます:このメソッドを持っているUIScrollViewDelegateが、存在します。次に、
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
を使用し、新しいコンテンツオフセットを設定する必要があります。したがって、このような何か:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
UIScrollView *otherScrollView = (scrollView == self.tableView1) ? self.tableView2 : self.tableView1;
[otherScrollView setContentOffset:[scrollView contentOffset] animated:NO];
}
あなたが欲しい場合は、のUITableViewにキャストすることができますが、そうする特別な理由はありません。
私はその意味的にUITableViewとしてキャストするほうがいいと思います。プログラム的にこの場合は、それは問題ではありません –
また、ユーザがスクロールしたテーブルビューは、無制限のサイクルに入るので、scrollViewDidScrollのsetContentOffset:メッセージを送信しないようにしてください。したがって:Inspire48のバージョンscrollViewDidScroll変更
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
beingScrolled_ = nil;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
if(beingScrolled_ == nil)
beingScrolled_ = scrollView;
}
と:ので、追加UIScrollViewDelegate方法が問題を解決するために実施されるべきであるbeingScrolled_タイプのIVAR迅速にUIScrollViewの
ある
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
UIScrollView *otherScrollView = (scrollView == self.tableView1) ? self.tableView2 : self.tableView1;
if(otherScrollView != beingScrolled)
{
[otherScrollView setContentOffset:[scrollView contentOffset] animated:NO];
}
}
対称的に2つのuitableviewsをスクロール:
func scrollViewDidScroll(scrollView: UIScrollView) {
if tb_time1 == scrollView {
tb_time2.contentOffset = tb_time1.contentOffset
}else if tb_time2 == scrollView {
tb_time1.contentOffset = tb_time2.contentOffset
}
}
ここで私を助けることができるかどうかわかります。私はtableviewの中にcollectionviewを持っていて、スクロールを同期したい。どうすればいい?私は何らかの方法でcollectionviewsセルにtableviewsデリゲートを送信しなければならないので、両方が同じ 'scrollViewDidScroll(_ scrollView:UIScrollView)'に依存していますか? – luke
Co ol、私はすぐにそのショットを与える行く:) – Greg
ええ、美しく働く:)ありがとう!私は投票するだろうが、私は15ポイントを持っていないXD – Greg
バウンスはあなたに正しく働く? – Janky