backgroundView を設定する UITableViewController があります。このコントローラーには UIRefreshControl がインストールされています。問題は、背景ビューを設定すると、更新コントロールが表示されないことです。背景ビューを削除すると、更新コントロールが表示されます。
私は何か間違ったことをしていますか?
backgroundView を設定する UITableViewController があります。このコントローラーには UIRefreshControl がインストールされています。問題は、背景ビューを設定すると、更新コントロールが表示されないことです。背景ビューを削除すると、更新コントロールが表示されます。
私は何か間違ったことをしていますか?
この動作の理由は、iOS 7 では、 がUITableView
のbackgroundView
上に描画されるためUIRefreshControl
です。これが仕様によるものなのか問題なのかはわかりませんが、これを修正した回避策は次のとおりです。
self.tableView.backgroundView.layer.zPosition -= 1;
このコードは、プロパティを設定する場所に配置されますUITableViewController refreshControl
。
背景を背面に送信するか、更新コントロールを前面に送信してみてください。リフレッシュ コントロールは、インデックス 0 に座っている可能性が高いです。
UITableViewController は、最初に配置したインデックスに関係なく、リロード中に UIRefreshControl をプッシュして 0 インデックス (「backgroundView」の背後) に戻すようです。これは私のために働いたものです(iOS 9):IBでリフレッシュを無効にします。コードで UIRefreshControl を作成し、backgroundView を設定した後に tableView に追加します。
let someView = UIView()
self.tableView.backgroundView = someView
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(MyTableViewController.refresh(_:)), forControlEvents: .ValueChanged)
self.tableView.insertSubview(refreshControl, atIndex: 1)