2017-09-21 15 views
8

に大きなタイトルで、プログラムbeginRefreshing、私はプログラム的にこのように(プログラム的にリフレッシュコントロールを表示)UIRefreshControlのリフレッシュを開始するために使用:iOSの11は、iOS 10では、ナビゲーションバー

self.tableView.setContentOffset(CGPoint(x: 0, y: - self.refreshControl.bounds.height), animated: false) 
self.refreshControl.beginRefreshing() 

しかし、今のiOS 11でコードがdoesnのこと UINavigationControllerUIRefreshControlのサイズの混乱を招くだけです。

UIRefreshControl(プログラムでリフレッシュコントロールを表示)をプログラムでリフレッシュするには、iOS 11のprefersLargeTitlesを使用しますか?

+0

[doc](https://developer.apple.com/documentation/uikit/uirefreshcontrol)のように、「リフレッシュコントロールは、テーブルビューコントローラで管理されているテーブルビューで使用するように特別に設計されているため、違う文脈では未定義の動作が起こる可能性があります。 '、代わりに' UITableViewController'を使ってみてください。 – liushuaikobe

+0

これを解決するのにこれまでどんな運があったでしょうか?私は同じ問題を抱えていましたが、今は毎回シミュレータでアプリを実行したときに期待どおりに動作しますが、次回に再びナビゲーションバーを壊してしまいます。 – xxtesaxx

+0

@xxtesaxx解決できませんでした。すべての私の 'UIViewController'sを' UITableViewController'sに移動することにしました。 – pableiros

答えて

0

UIRefreshControlは、UITableViewControllerで使用することを意味します。 UITableViewControllerにないUITableViewでそれを使用すると、未定義の動作につながる可能性があります。

ビューコントローラをUITableViewControllerのサブクラスにすることは必ずしも可能ではありませんが、UIViewControllerサブクラスを使用すると、サブクラスUITableViewControllerを子として追加することができます。そうすれば、UIRefreshControlと、UITableViewControllerが提供するその他の細かい点を利用することができますが、必要に応じてUIViewControllerのサブクラスを使用することができます。

関連する問題