2017-05-26 8 views
0

私はUIViewControllerを提示する第二に、現在のUIViewControllerからナビゲートするためにアンワインドセグエを使用したい:Swiftでインスタンスのタイプを確認するにはどうすればよいですか?

let unwindDestinationViewController = self.presentingViewController!.presentingViewController! 
        switch unwindDestinationViewController{ 
        case is UIViewControllerSubclass: 
         self.performSegue(withIdentifier: "unwindToUIViewControllerSubclass", sender: self) 
         break 
        default: 
         break 
        } 

しかし、これは動作しません。私はまた、UIViewControllerSubclass.Typecase文を変更しようとしたが、それは私にエラーを与えた:cast from UIViewController to unrelated type UIViewControllerSubclass always fails.

誰かが私が間違っているのものを私に言うことができる場合、私は本当に感謝します。

case let vc as UIViewControllerSubclass: 

あなたはそのクラスに固有のメソッドやプロパティにアクセスする必要がある場合に便利です:

case is UIViewControllerSubclass: 

クラスをテストするための別の方法:

+0

を**動作しません**。どういう意味ですか? 'print(type:of:unwindDestinationViewController)'で 'unwindDestinationViewController'の型を印刷して、実際の内容を調べてみてください。 – vacawama

答えて

0

あなたのコードでは、タイプをチェックするために正しいです。あなたがvcを使用する必要がない場合

だけで実行します。

case _ as UIViewControllerSubclass: 

あなたはちょうどここif声明使用することができます:あなたは上記のコードを言うとき

if unwindDestinationViewController is UIViewControllerSubclass { 
    self.performSegue(withIdentifier: "unwindToUIViewControllerSubclass", sender: self) 
} 
+0

私はifステートメントを使用することができますが、私はチェックするために5つの異なるビューコントローラを持っています、それは乱雑に見えます。問題の原因はswitch文ではありませんでした。 'unwindDestinationViewController'ビューコントローラは、' UITabBarController'と 'UINavigationController 'の2つの層に入れ子になっていました。いくつかのキャストの後、私はそれを働かせました。このシナリオでは、ソリューションと鉱山の両方が機能しました。ありがとうございました。 –

関連する問題