テーブルをビヨーンと引っ張って更新する。テーブルをビヨーンと引っ張って更新する。Controller(以下、テーブルビューコントローラー)の基本的な使い方について説明した。Control(以下、リフレッシュコントロール)について説明する。Viewを表示する機能である。Viewとは」ブラウザやTwitterで画面を下にビヨーンと伸ばしてページ更新したときに表示される読込中のあのマークだ。リフレッシュコントロールを試す。テーブルビューコントローラーはリフレッシュコントローラーを設定するためのプロパティ(refreshControl)を持っていて、そのプロパティにリフレッシュコントローラーのインスタンスを設定するだけで、テーブルビューを引っ張ったときに読込中マークが表示されるようになる。そこでリフレッシュコントローラーを使って読込中マークを表示するものを作ってみよう。以降の手順を開始する前のXcodeプロジェクトをGitHubに置いたので、実装を試してみる人はご利用されたし。事前準備では、テーブルビューコントローラーのテーブルビューに苗字一覧が表示されるようにしておいた。この時点ではテーブルビューを下に引っ張っても何も起きない。これにリフレッシュコントローラーを追加して、待ち時間のあいだ読込中を表示するようにする。リフレッシュコントロールは部品リストの中には無いのでソースコードから設定する。TestTableViewController.swiftを以下のコードに変更する。ViewDidLoadメソッドの中でリフレッシュコントロールをテーブルビューコントローラーに設定している。「テーブルビュー引っ張り時の呼び出しメソッド」で、レコードの半分を削除してテーブルビューの再読み込みを行っている。//リフレッシュコントロールを作成する。//インジケーターの下に表示する文字列を設定する。//インジケーターの色を設定する。//テーブルビューを引っ張ったときの呼び出しメソッドを登録する。//テーブルビューコントローラーのプロパティにリフレッシュコントロールを設定する。//配列に要素がある場合、要素の半分を削除する。//読込中の表示を見るためにあえて2秒スリープする。//テーブルを再読み込みする。//読込中の表示を消す。//セルを取得し、背景色と苗字を設定する。{super.viewDidLoad()//リフレッシュコントロールを作成する。UIRefreshControl()//インジケーターの下に表示する文字列を設定する。"読込中")//インジケーターの色を設定する。UIColor.blueColor()//テーブルビューを引っ張ったときの呼び出しメソッドを登録する。UIControlEvents.ValueChanged)//テーブルビューコントローラーのプロパティにリフレッシュコントロールを設定する。refreshTable(){//配列に要素がある場合、要素の半分を削除する。{dataList.removeRange(0...dataList.count/2)}//読込中の表示を見るためにあえて2秒スリープする。sleep(2)//テーブルを再読み込みする。tableView.reloadData()//読込中の表示を消す。{//セルを取得し、背景色と苗字を設定する。引っ張らずにインジケーターを表示するテーブルビューを引っ張らずにインジケーターを表示することができる。画面左端をドラッグするとインジケーターが表示されるものを作ってみよう。Viewまでドラッグ&ドロップで運ぶ。すると紫枠のエッジリコグナイザーが追加されるので選択する。水色枠のアトリビュートインスペクタボタンを押して設定画面を表示し、Leftにチェックを入れる。Ctrlキーを押しながら紫枠のエッジリコグナイザーをソースコードまで運んで吹き出しの設定画面を表示させる。Connectionに「Action」、Nameに「panLeftEdge」を入力し、Connectボタンを押す。これで画面左端をドラッグしたイベントをソースコードで受けれるようになった。TestTableViewController.swiftを以下のコードに変更する。画面左端のドラッグを開始したらbeginRefreshingメソッドを呼び出してインジケーターを表示する。この時、テーブルビューの位置を下にずらしてインジケーターを見えるようにしているのがポイントだ。ドラッグが終了したら「テーブルビュー引っ張り時の呼び出しメソッド」を呼んでテーブルの更新を行っている。下に引っ張ったときと、左端をドラッグしたときで同じメソッドを呼び出してテーブルの更新をしている。//リフレッシュコントロールを作成する。//インジケーターの下に表示する文字列を設定する。//インジケーターの色を設定する。//テーブルビューを引っ張ったときの呼び出しメソッドを登録する。//テーブルビューコントローラーのプロパティにリフレッシュコントロールを設定する。//ドラッグ開始時にインジケーターを表示する。//ドラッグ終了時にテーブルを更新する。//配列に要素がある場合、要素の半分を削除する。//読込中の表示を見るためにあえて2秒スリープする。//テーブルを再読み込みする。//読込中の表示を消す。//セルを取得し、背景色と苗字を設定する。{super.viewDidLoad()//リフレッシュコントロールを作成する。UIRefreshControl()//インジケーターの下に表示する文字列を設定する。"読込中")//インジケーターの色を設定する。UIColor.blueColor()//テーブルビューを引っ張ったときの呼び出しメソッドを登録する。UIControlEvents.ValueChanged)//テーブルビューコントローラーのプロパティにリフレッシュコントロールを設定する。{//ドラッグ開始時にインジケーターを表示する。{//ドラッグ終了時にテーブルを更新する。refreshTable(){//配列に要素がある場合、要素の半分を削除する。{dataList.removeRange(0...dataList.count/2)}//読込中の表示を見るためにあえて2秒スリープする。sleep(2)//テーブルを再読み込みする。tableView.reloadData()//読込中の表示を消す。{//セルを取得し、背景色と苗字を設定する。dataList.count}}以下は実際のプレイ動画。文字列を設定するときの注意点インジケーターの文字列を設定するタイミングには注意が必要だ。バグが解消されるまではrefreshControlプロパティにリフレッシュコントロールのインスタンスを設定するようにしよう。//テーブルビューコントローラーのプロパティにリフレッシュコントロールを設定する。//インジケーターの下に表示する文字列を設定する。//インジケーターの色を設定する。//テーブルビューを引っ張ったときの呼び出しメソッドを登録する。{super.viewDidLoad()//テーブルビューコントローラーのプロパティにリフレッシュコントロールを設定する。UIRefreshControl()//インジケーターの下に表示する文字列を設定する。"読込中")//インジケーターの色を設定する。UIColor.blueColor()//テーブルビューを引っ張ったときの呼び出しメソッドを登録する。UIControlEvents.ValueChanged)}以下は実際のプレイ動画。最初から「読込中」が表示されてしまっている。テーブルビューコントローラー以外でも使えるリフレッシュコントロールはテーブルビューコントローラーだけでなく、UIWebViewやUIColloctionViewや普通のUITableViewなどビヨーンと引っ張れる部品にaddSubViewでリフレッシュコントロールの機能を追加できる。保存データの更新、削除、ロールバックを行う。...【Swift】テーブルビューにセクションやインデックスを追加する方法。Controllerの使い方。Viewとの違いを把握する。Controllerの使い方。格子状に並んだセルをタップして画面遷移する。Controllerの使い方。Cellを使ってストーリーボードのみでテーブルを作る。コメントをキャンセルメールアドレスが公開されることはありません。