2016-11-10 5 views
1

Xcode8/iOS10にアップデートしたので、& Swift 3ナビゲーションバーのタイトルとして使用されるセグメント化されたコントロールでこの奇妙な問題が発生しました。または私はそのエリアに触れることができます(その時は見えません)、それが現れます。UIDegmentedControlとしてのUINavigationBarタイトルアイテムが遅れてロードされる

アイテムはロードされているものの、描画されていないと考えられます。領域をタッチするか、ビューの再描画を求めるイベントループが発生して描画されます。

UIがブロックされていません。

解決方法が見つかりません。

PSは:新鮮な新しいプロジェクトにデバッグビュー階層を破る

after some delay.. on touching area

を再現することができませんでした、それはUISegmentedControlsの生活を表示されますが、色/テキストで初期化されていません...それは意志、いくつかの秒後。

enter image description here

+0

2番目のビューはどのように描画されますか?実際のデバイスでこれをテストしましたか?シミュレータ(少なくとも私の場合)は、GPU上で何かをしようとすると、パフォーマンスが大きく低下します。多分それはあなたが心配するべきではないものですか? – dfd

+0

問題は、シミュレータとデバイスの両方にあります。このセグメント化されたコントロールは実際には何にも束縛されません – Akabab

答えて

0

[OK]を、このスレッドによるものでした。

私のアプリの読み込みで、コアデータスタックが初期化されていました。そのコールバックで、私はwindow.rootViewController = vcを使って正しいビューコントローラをインスタンス化していましたが、これはメインスレッドで実行する必要がありますが、コアデータスタックinitの完了はバックグラウンドで完了しました。


まだ奇妙なことです。私はUIWindow拡張を実装しました

extension UIWindow { 

    func setRootViewController(with viewController: UIViewController) { 
    DispatchQueue.main.async { 
     self.rootViewController = viewController 
    } 
    } 

} 

// beeing in background thread 
self.window.setRootViewController(with: self.rootVC) 

これは、以下の問題を生成します。

が、次は

extension UIWindow { 

    func setRootViewController(with viewController: UIViewController) { 
    self.rootViewController = viewController 
    } 

} 

// beeing in background thread 
DispatchQueue.main.async { 
    self.window.setRootViewController(with: self.rootVC) 
} 

が違いますかわからない動作します。

関連する問題