質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

3555閲覧

UITableViewのスクロール時にセルを追加していく実装

YosukeNakayama

総合スコア80

iOS 9

iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/06/27 03:32

編集2016/06/27 03:33

【背景】
RealmSwiftを使用しております。
TableViewにてRealmに登録したデータを表示するのに
10秒ほどかかっています。
TableViewにはsectionを使用しております。

イメージ説明

【やりたいこと】
ある程度表示させたら、新たにクエリを発行して表示させるということがやりたい。

表示させるデータのオブジェクトを作り、
新たに表示させるために取得したオブジェクトを下にスライドさせたときに追加する仕組みを考えています。

【疑問点】
表示させるオブジェクトを配列に格納し、どんどん追加していけばいいかなと思ったのですが、
一番下にいったときをどうやって判別すればいいのでしょうか?
おそらくUITableViewに一番下にいったときみたいなメソッドがあるのかなと思いましたが、よくわかりませんでした。
ちなみに、できるだけUIActivityIndicatorなど表示させずにスムーズに表示させたいです。

けっこうよくある処理だと思うので、もし参考になるコードなどあれば見てみたいです。
よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらくUITableViewに一番下にいったときみたいなメソッドがあるのかなと思いましたが、よくわかりませんでした。

TableViewが一番下になった場合のメソッドはありませんが、以下の方法で判定できます。

TableViewUIScrollViewを継承しているので以下のようにUIScrollViewDelegateをに適合させてUIScrollViewのDelegateメソッドを使用することができます。

※注意としてはscrollViewDidScrollメソッドはスクロールする度に呼ばれるので、配列にデータを追加してリロードの処理が複数回呼ばれないように制御する必要が有ります。

swift

1class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIScrollViewDelegate

swift

1 2// 以下のUIScrollViewDelegateメソッドでTableViewの位置が一番下に来た時の判定ができます。 3func scrollViewDidScroll(scrollView: UIScrollView) { 4 if myTableView.contentOffset.y + myTableView.frame.size.height > myTableView.contentSize.height { 5 print("一番下に到達した時の処理") 6 } 7}

TableViewにてRealmに登録したデータを表示するのに

10秒ほどかかっています。

実装を見ていないので指摘はできませんが、10秒かかるのはあまりにも遅いので処理を見直す必要があると思います。

投稿2016/06/27 14:06

_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YosukeNakayama

2016/06/29 08:23

なるほど、スクロールする度に呼ばれるメソッドがあったのですか! 毎度ありがとうございます、これでいじってみます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問