2016-11-10 13 views
2

私はアプリケーションをコーディングしており、DBを照会して情報を配列のセットに追加するqueryAndAppend関数を設定しています(テーブルビューのセルを反復処理するために使用されます)。クエリ関数は、viewDidLoad()で呼び出されるときに適切に機能します。私は追加機能を呼び出して(したがって、テーブルのセルを更新する)機能をリフレッシュするプルが必要ですが、正しく動作していません。リフレッシュ機能を持たないリフレッシュにプルしますか?

var refreshControl = UIRefreshControl() 
    override func viewDidLoad() { 
      super.viewDidLoad() 

      myQueryandAppend(completion: { 
       self.tableView.reloadData() 
      }) 

      upComingQueryandAppend(completion: { 
       self.tableView.reloadData() 
      }) 

      refreshControl = UIRefreshControl() 
      refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh") 
      refreshControl.addTarget(self, action: #selector(MainPageVC.refresh(_:)), for: UIControlEvents.valueChanged) 

     } 
     func refresh(_ sender: AnyObject){ 

      myQueryandAppend(completion: { 
       self.tableView.reloadData() 
       self.refreshControl.endRefreshing() 

      }) 
      upComingQueryandAppend(completion:{ 

       self.tableView.reloadData() 
       self.refreshControl.endRefreshing() 

      }) 

     } 

私は別のビューコントローラに非常によく似たセットを持っているように、そのは、(別のクエリで機能を追加/)動作していない理由はまったくわからないリフレッシュするプルで正常に動作します。ここでは、関連するコードです。

+0

tableviewcontrollerを使用していますか?あなたはmyQueryandAppendコードを表示できますか? – Sahil

+1

https://stackoverflow.com/questions/24475792/how-to-use-pull-to-refresh-in-swift-2?noredirect=1&lq=1を見てみましたか? – Kevin

+0

@Sahilそれは、私が 'tableViewController'を使用していなかったので、通常のVCで' tableView'を持っていたので、 'tableView.addSubview(refreshControl)'というコード行が必要でした。ケビンが提供したリンクは多くの助けになりました。 –

答えて

1

クラスがUIViewControllerなくUITableViewControllerある場合は、手動tableViewにサブビューとしてrefreshControlを追加する必要があります。

override func viewDidLoad() { 
    super.viewDidLoad() 


    myQueryandAppend(completion: { 
     self.tableView.reloadData() 
    }) 

    upComingQueryandAppend(completion: { 
     self.tableView.reloadData() 
    }) 

    refreshControl = UIRefreshControl() 
    refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh") 
    refreshControl.addTarget(self, action: #selector(MainPageVC.refresh(_:)), for: UIControlEvents.valueChanged) 
    // here is the extra job! 
    tableView.addSubview(refreshControl) 
} 
1
:だから

tableView.addSubview(refreshControl) 

viewDidLoad()なければならないが、このようになります。

iOS 10+では、refreshviewコントロールを直接tableview/scrollviewの.RefreshControlプロパティに割り当てることができます

tableView.RefreshControl = refreshControl 
関連する問題