2011-02-01 4 views
3

上にスクロールするときにUitableviewを更新したいと思います。 Facebookのアプリのように、uitableviewを上にスクロールすると、 "upadating"と表示され、新しい行がテーブルビューの上に挿入されます。私は私のアプリで同じ効果を与えたい。デフォルトのuitableviewメソッドを使用してデザインすることが可能か、カスタマイズする必要があります。 誰かがそれについて考えているなら、返信してください。uitableview上にスクロールするときの自動入力

答えて

2

insertRowsAtIndexPaths:を使用すると、テーブルビューの前面に新しい行を挿入できます。あなたはこれらの挿入を調整するためにあなたのdataSourcedelegate方法をカスタマイズする必要があります。たとえば、

NSIndexPath *indexPathForRow_0_0 = [NSIndexPath indexPathForRow:0 inSection:0]; 
NSIndexPath *indexPathForRow_0_1 = [NSIndexPath indexPathForRow:1 inSection:0]; 
[yourTableView insertRowsAtIndexPaths:[NSArray arrayWithObjects:indexPathForRow_0_0, indexPathForRow_0_1, nil] withRowAnimation:UITableViewRowAnimationTop]; 

上記のコードは、セクション内のインデックス0および1 0

注2つの行を挿入します。重要なことは、numberOfRowsInSectionメソッドから正しい値を返す必要があることです。ここでは、上記の例では、numberOfRowsInSectionメソッドはyourPreviousNumberOfRows + 2を返します。なぜなら、2行追加したからです。

+0

おかげで..あなたは、このために任意のチュートリアルのリンクを持っていますか? – Gaurav

+0

申し訳ありませんが、私はチュートリアルへのリンクがありません。私は単純なグーグルがあなたを助けてくれると思います。 – EmptyStack

6

あなたはあなたのユーザーが一番上にスクロールしたときを検出することもできます。これを行うには

いくつかの方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView.contentOffset.y == 0) 
     NSLog(@"At the top"); 
} 

出典:How can I get scrollViewDidScrollToTop to work in a UITableView?

または使用:

scrollViewDidScrollToTop: 

出典:http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/ScrollingViewContent/ScrollingViewContent.html

あなたの行動に応じてイベントを発生させることができます: つまり ユーザーがスクロールしてトップに戻るときに、UIの変更を呼び出してから、更新ロジックを呼び出します。

insertRowsAtIndexPaths:withRowAnimation: 

サンプルおよびソース:更新ロジックの後http://www.mlsite.net/blog/?p=466

は、あなたのデータソースが更新されるようになりましたと仮定すると、[のtableView reloadData]を呼び出して、終了しました。必要に応じて、deleteRowsAtIndexPaths:withRowAnimation:を使用して、現在更新中であることを通知するセルを削除するときにエフェクトを追加することができます。

+0

scrollViewにコンテンツが挿入されている可能性があります(たとえば、ナビゲーションバーの後ろにあるビューはナビゲーションバーの端から開始します)。 scrollView.contentOffset.y + scrollView.contentInset.top == 0は良いはずです。 – Kazuki

+0

良い答え私はあなたの努力のためにアップ票を持っています –

5

別の方法:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if (indexPath.row == 0) { 
      [self fetchMoreMessages]; 
    } 
} 
+0

テーブルビューのケースでは、scrollViewDidScrollよりもはるかに効率的かつ効率的です。 –

関連する問題