2017-10-30 8 views
0

UIViewController内にUITableViewがあります。私はUIRefreshControlを設定して機能を更新しようとしています。以下は私のコードです。UIRefreshControlが表示されない

// Within Class Itself 
lazy var refreshControl: UIRefreshControl = { 
    let refreshControl = UIRefreshControl() 
    refreshControl.addTarget(self, action: 
     #selector(MainViewController.refreshData), 
          for: .valueChanged) 
    refreshControl.tintColor = UIColor.darkGray 

    return refreshControl 
}() 

// Within viewDidLoad 
if #available(iOS 10.0, *) { 
    myTableView.refreshControl = refreshControl 
} else { 
    myTableView.addSubview(refreshControl) 
} 

しかし、私はシミュレータでそれを実行し、テーブルの上に下にドラッグしてみたときには、何も起こりません表示し、何も表示されません。これは、テーブルビューに追加されていないことをリフレッシュするためのプルのようなものです。

どうすればこの問題を解決できますか?

+0

どの関数に 'if'文が含まれていますか? – Paulw11

+0

@ Paulw11 'viewDidLoad' –

+1

コードは私にとってはうまく見えますが、私のシミュレータでも同じことが働いています。 iOS 9とiOS 10の両方で試してみました+ –

答えて

0

これは、遅延初期化でrefreshControlを宣言したためです。そして、あなたはそれの外側からtableviewにrefreshControlを追加しています。

LazyはrefreshControlの初期化を遅らせますが、その前にrefreshControlがtableviewに追加されますが、ここではrefreshControlは空です。それで、うまくいきません。

遅延初期化を削除してください(以下のようなもの)。それがうまくいくことを願っています

var refreshControl = UIRefreshControl() 
    refreshControl.addTarget(self, action: 
     #selector(MainViewController.refreshData), 
          for: .valueChanged) 
    refreshControl.tintColor = UIColor.darkGray 

// Within viewDidLoad 
if #available(iOS 10.0, *) { 
    myTableView.refreshControl = refreshControl 
} else { 
    myTableView.addSubview(refreshControl) 
} 
+0

まだ動作していません –

+0

テーブルビュープロパティをストーリーボードテーブルビューに接続するのを忘れていませんか?それをもう一度確認してください。さもなければ、何らの障害もありません。 –

+0

私はデモプロジェクトを作成しましたが、うまく動作します。私はそれが[SwipeCellKit](https://github.com/SwipeCellKit/SwipeCellKit)と関係があるのだろうかと思います。 –

関連する問題