私はSwiftのアプリケーションをコーディングしています。これは、データベースクエリの後に追加された配列の情報を反復してテーブルを生成することです。私はviewDidLoad()
メソッドのクエリ、追加、およびtableView.reloadData()
を持っています。それはうまく動作します。私はまた、ほぼ同じコードを画面上のプルで応答するリフレッシュ機能に書き込んだ。それはうまくいく。しかし、問題はそれが非常に忙しいということです。 2回書かれたコードがたくさんあります。私はそれを修正する最良の方法が何であるか疑問に思っています。 viewDidLoad()
でSwiftのコード冗長性を減らすには?
:ここに関連するコードがある
override func viewDidLoad() {
super.viewDidLoad(){
//run query, append arrays
self.tableView.reloadData()
}refreshControl = UIRefreshControl()
refreshControl!.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl!.addTarget(self, action: #selector(DisplayEventsTVC.refresh(_:)), forControlEvents: UIControlEvents.ValueChanged)
}
リフレッシュ機能:
func refresh(sender: AnyObject){{
//exact same query and appending
}
self.tableView.reloadData()
self.refreshControl?.endRefreshing()
}
クエリおよび添付は非常に長いので、私はそれを処理するためのより良い方法をしたいと思います単にviewdidload()からリフレッシュ関数にコードをコピーして貼り付け、.endRefreshing()を追加するよりも簡単です。これを行う最も効果的な方法は何ですか?
これはすべてtableviewcontrollerで行われます。
をテストしていないだけでドラフトスニペットは、なぜ「クエリではなく、 'viewDidLoad'と' refresh'の両方が呼び出される別々の関数でちょうど追加されていますか?このfuncは補完ハンドラも提供する必要があるように見えるので、 'endRefreshing'のタイミングを制御することができます。 "query and appending"が別のスレッドで行われていると仮定すると、 'viewDidLoad'は' tableView.reloadData() 'も必要とします。 – Michael
@Michael、申し訳ありません。 viewDidLoadは.reloadData()を持っていますが、私は質問にそれを入れるのを忘れていました。どのようなリフレッシュのための完了ハンドラを設定するための最良の方法は...あまりにも良いものではありません。 –