2017-04-08 4 views
2

私はページビューコントローラを使用して、アプリでイメージカルーセルを実装しています。親ビューコントローラにコンテナビューがあり、ページビューコントローラへの埋め込みがあります。私が持っている問題は、私が外に出て、非同期にこれらのイメージをフェッチする必要があり、viewDidLoadがイメージを取得する前にsegueが起こったときです。プログラムに埋め込まれたコード

私はセグエの準備:のviewDidLoadで

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "startCarousel" { 
    let carouselPageViewController = segue.destination as! CarouselPageViewController 
    carouselPageViewController.images = carouselImages 
    } 
} 

を:

GalleryManager.sharedInstance.getData = { 
    (data) in 
    // Assign images to instance property here ...  
} 

私の思考は、一度私はプログラムでセグエ自分自身を開始した画像を得ることです。または、私がこれを別の方法でやっていなければならない場合は、アドバイスをいただければ幸いです。

+2

埋め込みビューコントローラ内の画像を取得、埋め込みビューコントローラではなく、埋め込みビューコントローラへの参照を保持し、イメージプロパティを取得したらイメージプロパティを更新します。 – Paulw11

+0

私は@ Paulw11に同意するか、viewWillAppearまたはviewDidAppearの内部でgetData関数を動かすことができるので、画像をロードする際に関数が待ち時間を引き起こさないようにすることができます。 –

答えて

2

いいえ、埋め込みセグを遅らせることはできません。埋め込みセグを使用すると、View Controllerがロードされるとすぐに起動します。

データがロードされるまで待ってから、データがロードされるとデータを表示するために使用するビューコントローラをインストールするためにsetViewControllers(direction:animated:completion)を呼び出す必要があります。

0

埋め込みセグを遅らせることはできません。あなたはビューコントローラのボタンを配置しようと、ビューの負荷設定ボタン後の画像を設定するためにクリックし

...

1

スウィフト3、Xcodeの8

あなたはこの方法で実現することができます:

  1. はあなたのmasterViewControllerでprepareForSegueでページビューコントローラへの参照を設定します。

    var myContainerViewController: UIPageViewController? 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    { 
        if segue.identifier == "embedSegue" { 
        if let destination = segue.destination as? YourPageViewControllerClass { 
         self.myContainerViewController = destination 
        } 
    } 
    
  2. 独自のpageViewControllerクラス内の関数を定義します。

    func someFunction(){ 
        //configure your image or swipe page 
    } 
    
  3. あなたが画像を取得するとき、あなたのmasterViewController呼び出しで:

    self.myContainerViewController?.someFunction() 
    
関連する問題