2015-09-16 42 views
13

2奇怪的事情發生了:如何推SFSafariViewController?當我試圖把Safari瀏覽器的ViewController

  1. 及其與完成按鈕地址欄中放置我下面的導航欄;

  2. 委託方法safariViewControllerDidFinish:當我按下後退按鈕時不會被調用。

我不認爲蘋果會批准這個behavoir的,所以:

有沒有辦法來推動Safari瀏覽器的ViewController沒有這些問題呢?

+3

在記錄中沒有說明,但您只能以模態方式顯示視圖。您不應該推入導航控制器。 – rckoenes

回答

21

時,不要推SFSafariViewController與pushViewController:animated:方法,而是使用了presentViewController:animated:completion:方法。

Safari視圖控制器將會呈現一個標準的推動動畫。

+2

太奇怪了。 – beebcon

4

除了rckoenes評論唯一的選擇我看到的是隱藏的導航欄呈現SFSafariViewController

import UIKit 
import SafariServices 

class ViewController: UIViewController { 
    @IBAction func openBrowser(sender: AnyObject) { 
     let safariViewController = SFSafariViewController(URL: NSURL(string: "http://your.url")!) 
     safariViewController.delegate = self 

     // hide navigation bar and present safari view controller 
     navigationController?.navigationBarHidden = true 
     navigationController?.pushViewController(safariViewController, animated: true) 
    } 
} 

extension ViewController: SFSafariViewControllerDelegate { 
    func safariViewControllerDidFinish(controller: SFSafariViewController) { 
     // pop safari view controller and display navigation bar again 
     navigationController?.popViewControllerAnimated(true) 
     navigationController?.navigationBarHidden = false 
    } 
} 
相關問題