UIRefreshControl
下部に追加することは可能UITableView
ですか?私はそれを使ってより多くのデータをロードします。お願い、何か提案はありますか?
8 に答える
この問題に対する簡単な解決策はないと思います。誰かがこの動作を実装するために別のライブラリを作成できる可能性があります。さらに、テーブルビューにデータをキャッシュすると、さらに複雑になります。
しかし、問題を分解してみましょう。そうすれば、あなたが望むものを達成するのに役立つかもしれません. 次のコードを使用して、アプリに行を追加しました。
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
float endScrolling = scrollView.contentOffset.y + scrollView.frame.size.height;
if (endScrolling >= scrollView.contentSize.height)
{
NSLog(@"Scroll End Called");
[self fetchMoreEntries];
}
}
または、次のようなこともできます。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height)
{
if (!self.isMoreData)
{
self.MoreData = YES;
// call some method that handles more rows
}
}
}
私が上で説明したように、多くの質問でそのような方法を見たに違いありませんが、確かにあなたが求めたものではありません. しかし、できることは、上記のコードがより多くのデータをロードするプロセス中に、サブビューを追加して、UIRefreshControl が提供するものと同様の画像をいくつか表示することです。上記のコードが実行されるまで、進行状況として表示されるサブビューに画像を追加します。ホームこれは役立ちます。
ところで、学習目的でない限り、これほど小さいものを作成するのに時間を無駄にするだけなので、そうしないことをお勧めします。
UIView を使用して、下部の refreshControl をカスタマイズできます。UIView を作成し、UITableView に footerView として追加します。
UIView* footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
[footerView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"refreshImage.png"]]];
tableView.tableFooterView = footerView;
非表示にする:tableView.tableFooterView.hidden = YES;
UIScrollViewデリゲートを実装 -
(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height)
{
tableView.tableFooterView.hidden = NO;
// call method to add data to tableView
}
}
データをtableViewに追加する前に、現在のオフセットを保存しますCGPoint offset = tableView.contentOffset;
reloadData を呼び出し、以前に保存したオフセットを tableView に戻します[tableView setContentOffset:offset animated:NO];
下部に追加された新しいデータを感じることができるように。