2017-09-26 4 views
0

私はvisualEffectをiOS10以前のバージョンで正常に動作しているビューに追加しようとしていますが、iOS 11ではクラッシュしています。エラーの理由を以下に示します:奇妙なことは、私はそれがクラッシュを渡すだのviewDidLoadでこのコードを追加するときに...誰もが私を助けてくださいですUIVisualEffectView LoadVIew()

override func loadView() { 
    super.loadView() 

    // create the blur view 
    let blurView = UIVisualEffectView(effect: effect) 
    if let oldView = view { 
     blurView.frame = view.frame 
     oldView.translatesAutoresizingMaskIntoConstraints = false 
     blurView.contentView.addSubview(oldView) 
     blurView.contentView.pinParentAllDirections(oldView) 
    } 
    view = blurView 
} 

has been added as a subview to <UIVisualEffectView: 0x7feabe90d170; frame = (0 0; 375 812); layer = <CALayer: 0x6000006257c0>>. Do not add subviews directly to the visual effect view itself, instead add them to the -contentView." 

私は、次のコードを使用しています主要な問題を理解しているか、iOS11の何かを見逃しています。

答えて

2

super.loadView()loadViewから呼び出すべきではありません。

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621454-loadview

あなたのビューを作成し、 ビューコントローラを初期化するためにInterface Builderを使用する場合は、このメソッドをオーバーライドしてはなりません。

loadViewメソッドからコードを移動することによって同様のものを修正しました。ビューをカスタマイズするには、loadViewを使用してビューを構築します。

+0

いいえ私はそうではありません..コードから完全に来ています –

+0

@Hani Ibrahimが提案したsuper.loadView()を削除してみましたか? – Rishi

+0

私は今行ったことがありますが、何らかの理由でloadView()内の無限ループに入った –

1

目的や目的にかかわらず、loadViewをオーバーライドしたり、自分で呼び出すべきではありません。 awakeFromNib()またはviewDidLoad()をオーバーライドして、画面に表示される前にビューをさらにカスタマイズする必要があります。

viewWillAppear(animated :)のどこにでも表示される前に、最後の2回目のタッチを行うこともできます。

幸運を祈る!

関連する問題