2015-11-19 1 views
0

Я сейчас обновляю наше приложение iTunes и хочу воспользоваться новым SFSafariViewController api. Случай использования чрезвычайно прост, когда пользователь открывает приложение, приложение автоматически загружает установленный URL-адрес в SFSafariViewController.XCode 7 - Swift - Автоматическая загрузка сайта через SFSafariViewController

Похоже, что это ограниченные учебные пособия, а те, которые существуют, связаны с IBActions через ссылки после открытия приложения.

Как автоматически открыть ссылку в SFSafariViewController, когда пользователь нажимает приложение на своем устройстве?

Следующий код только белые страницы:

import UIKit 
import SafariServices 

class ViewController: UIViewController 
{ 
    private var urlString:String = "https://example.com" 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!) 

     svc.presentViewController(self, animated: true, completion: nil) 
    } 

    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

---- Рабочий код ----

import UIKit 
import SafariServices 

class ViewController: UIViewController 
{ 
    private var urlString:String = "https://example.com" 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func viewDidAppear(animated: Bool) { 

     super.viewDidAppear(animated) 

     let svc = SFSafariViewController(URL: NSURL(string: self.urlString)!) 

     self.presentViewController(svc, animated: true, completion: nil) 
    } 
} 

ответ

2

Ваш текущий код пытается представить текущий контроллер вид (ViewController) от SFSafariViewController, который еще не отображается.

Попробуйте поменять это:

svc.presentViewController(self, animated: true, completion: nil) 

Для этого:

self.presentViewController(svc, animated: true, completion: nil) 
+0

Получение следующее предупреждение: 'Предупреждение: Попытка представить на чей вид не находится в иерархии окон! ' –

+3

Вместо вызова этого в' viewDidLoad', вызовите его в 'viewDidAppear:' – EmilioPelaez

+0

@EmilioPelaez: Это сработало. Спасибо, парни. –

Смежные вопросы