2017-07-18 21 views
0

私はscreen1vcscreen2vcのような1つの画面を持っています。今私はcommonvcと呼ばれる1つのビューコントローラがあります。どのビューコントローラから別のビューコントローラに来ているか確認する方法

疑いがあります。 screen1vcscreen2vcの両方で、ユーザはcommonvcの画面を見ることができます。しかし、viewdidloadまたはviewdidapperでは、どのviewcontrollerユーザが来ているかを確認する必要があります。

どのように私はcommonvc

self.navigationController?.pushViewController(commonvc, animated: true) 

に移動するためにプッシュseagueを作っています、私をout.I助けてくださいんでき

if (screen1vc) 

{ 

} else if (screen2vc){ 

} 

などのおかげ

+0

のようにそれを使用するあなたがcommonvc' 'でこれを確認する必要がありますか? このコントローラーの作成元は? –

+0

なぜ知りたいですか?あなたの 'commonvc'はそれを表示したビューコントローラを知る必要はありません。 – rmaddy

答えて

0

あなたには、親コントローラのプロパティを持つことができます一般的なVC。それをscreen1vcのprepareFor segueメソッドで設定し、screen2vcをselfで設定します。今

は、commmonVCに、ちょうどこれは動作するはず

if ([parentController iskindOfClass: screen1vc]) 
{ 

}else if ([parentController iskindOfClass: screen2vc]){ 

} 

をご確認ください。迅速で

0
NSUInteger numberOfViewControllersOnStack = [self.navigationController.viewControllers count]; 
UIViewController *parentViewController = self.navigationController.viewControllers[numberOfViewControllersOnStack - 2]; 

    if ([parentViewController isKindOfClass: screen1vc]){ 

    }else if ([parentViewController isKindOfClass: screen2vc]){ 

    } 
0

あなたは

navigationcontroller.viewControllers[navigationcontroller.viewControllers.count - 2] 
に、スタックnavigationcontrollerにある場合、あなたが必要のUIViewControllerオブジェクトを提供します。

あなたが表示コントローラを提示している場合には、self.presentingがあなたのために働きます。

希望すると便利です。

0

次の2つの方法

1.Toは、以下のように実行してnavigationController viewControllers配列から以前の1を取得することによって行うことができます。

if let navController = self.navigationController, navController.viewControllers.count >= 2 { 
    let viewController = navController.viewControllers[navController.viewControllers.count - 2] 
} 

2. viewController.Youにプッシュする

var isFrom:String = "" 

アサインcommonVCで変数を作成するには、以下のような何かを行うことができますがcommonVC &塗りつぶし必要な値に文字列変数を作成することによって、別の方法commonVcオブジェクトを使用してプッシュする前の値。

commonVC

で今
commonvc.isFrom = "screen1VC" 
self.navigationController?.pushViewController(commonvc, animated: true) 

if (self.isFrom == "screen1VC") 

{ 

} else if (self.isFrom == "screen2VC"){ 

} 
0

あなたはUIViewの拡張を作成して、アプリケーション全体で使用することができます。

extension UIView{ 
var parentViewController: UIViewController?{ 
    var parentResponder: UIResponder? = self 
    while parentResponder != nil { 
     parentResponder = parentResponder!.next 
     if parentResponder is UIViewController{ 
      return parentResponder as! UIViewController! 
     } 
    } 
    return nil              
    }                 
} 

そしてこの

if parentViewController?.isKind(of: screen1vc){ 

} 
関連する問題