2016-12-23 4 views
0

Ich habe einen ViewController mit einem WKWebView, die Ansicht ist richtig positioniert beim ersten Mal, aber nach dem Verschieben in eine andere Ansicht (Ich öffne eine andere Ansicht durch Abfangen von Links aus der WebView) und durch Drücken des Navigationselements (Zurück-Taste) erscheint es kurz an der richtigen Stelle und wird dann mit dem oberen Rand der Webansicht hinter der Navigationsleiste neu geladen, so dass der obere Rand der Seite abgeschnitten wird.Swift 3 NavigationController Rücksprung verursacht wkwebview in falsche Position zu bewegen

Ich habe gesucht und kann keine ähnlichen Probleme finden, noch kann ich etwas offensichtliches im Code sehen.

Antwort

0

Sie haben super.viewDidLoad von func viewDidAppear() aufgerufen, was zu unerwartetem Verhalten führen kann. Daher wird Ihre Unterklasse UIViewController niemals ihre Superklasse benachrichtigen, dass die Ansicht geladen wurde.

override func viewDidAppear(_ animated: Bool) { 
    // Do not do this before calling super! 
    self.edgesForExtendedLayout = UIRectEdge.top; 
    // You are calling the wrong the function for super 
    // It should be super.viewDidAppear(animated) 
    super.viewDidLoad() 
    addSlideMenuButton() 
    let screenSize: CGRect = UIScreen.main.bounds 
    let frameRect: CGRect = CGRect(x: 0, y: 100, width: screenSize.width, height: screenSize.height) 
    let url: NSURL = Bundle.main.url(forResource: "services", withExtension: "html")! as NSURL 
    let requestObj: NSURLRequest = NSURLRequest(url: url as URL); 
    self.webView = WKWebView(frame: frameRect) 
    self.webView?.load(requestObj as URLRequest) 
    self.webView?.navigationDelegate = self 
    self.webView?.uiDelegate = self 
    self.view = self.webView 
} 
+0

Korrigiert diese 2 Fehler, aber immer noch das gleiche Problem leider. – joe642

+0

Ich habe den Superklassenaufruf in 'super.viewDidAppear (animiert)' geändert und die obere Zeile des Codes darunter verschoben. – joe642

Verwandte Themen