2016-08-12 6 views
3

私はimageviewのみを含むviewControllerを持っています。私は、Webサービスからデータを取得するような、アプリケーションにロードがあるときはいつでもそれを提示したいと思います。Swiftを使ってiOSでviewControllerを閉じる方法

var loader = LoadingViewController() 
loader.showLoading(self) 

の下のように必要なときに私はそれをイメージしてくれのViewControllerを示し、この関数を呼び出すとき、だから私は

func showLoading(viewController:UIViewController) { 
    viewController.presentViewController(LoadingViewController(), animated: false, completion: nil) 
} 

として私loaderViewControllerで関数を作成しているこれは、期待通りに働いています。

しかし、今は必要なときに、こののViewControllerを却下したいが、私はそうすることはできませんよ、これは私がこれまで試してみました何ですが、私は

func dismissLoader() { 
    let load = LoadingViewController() 
    load.dismissViewControllerAnimated(true) { 
     print("Dismissing Loader view Controller") 
    } 
} 

として私LoaderViewControllerで別の関数を作成した。しかし、その動作していませんviewControllerは画面からディザリングしていません。

私に案内してください

+0

YASLoadingViewControllerとLoadingViewControllerは同じですか? –

答えて

11

あなたはの新しいインスタンスを作成する必要はありません作成していますあなたのローダーを呼び出してdismissViewControllerAnimated(_:Bool)と呼んでください。

ちょうどだからあなたのViewController

self.dismissViewControllerAnimated(true) 

を呼び出して、あなたの関数は、あなたのコードは、多くの欠陥を持っている

func dismissLoader() { 

    dismissViewControllerAnimated(true) { 
     print("Dismissing Loader view Controller") 
    } 
} 
+0

私のためにdismissLoader関数を書き直せますか? – Byte

+0

done @Byte、私は投稿を編集しました –

+0

それは私のために働いた – Byte

1

let load = YASLoadingViewController()毎回をしない、あなたは別のコントローラ は一度それを実行した後、却下するだけloadを使用するか、または存在

+0

これは回答ですか? – Byte

+1

あなたの答えはしばしば正しいですが、より幅広い説明を提供すれば本当に役立ちます。質問者はしばしばあなたの短い答えを理解するのに十分な資格がないと思います。 –

+0

@ShadowOfチップありがとうございました –

1
self.dismissViewControllerAnimated(false, completion: nil) 
1

になります。あなたがこれを達成しようとするやり方は良いことではありません。あなたはクイックフィックスをしたい、とちょうどあなたの既存の方法を変更したい場合はしかし、これを行うには、

func dismissLoader() { 
    self.dismissViewControllerAnimated(true) 
    print("Dismissing Loader view Controller") 
} 

そして、あなたは新しいLoadingViewControllerを提示しているときに、メソッドの上に呼び出すことができますので、それへの参照を保持します。

とにかく、上記のコードは、呼び出されたViewControllerで使用可能なViewControllerがない場合、iOSがこのメソッドを親のViewControllerの階層に戻すため、参照を保持しなくても機能します。

2

あなたは、親ビューコントローラにLoadingViewControllerのリンクを保存する必要があります:スウィフト3では

var loader: LoadingViewController? 

func showLoadingIn(viewController: UIViewController) { 
    loader = LoadingViewController() // create new instance before presentation 
    viewController.presentViewController(loader!, animated: false, completion: nil) 
} 

func dismissLoader() { 
    loader?.dismissViewControllerAnimated(true) { 
     print("Dismissing Loader view Controller") 
    } 
} 
3

あなたが次のことを行うことができます。

self.dismiss(animated: true) 
関連する問題