2017-07-18 48 views
0

我有一個屏幕,如screen1vcscreen2vc。現在我有一個視圖控制器叫做commonvc如何檢查我們來自哪個視圖控制器到另一個視圖控制器

我的疑問是。在screen1vcscreen2vc我將允許用戶看到commonvc屏幕。但在viewdidloadviewdidapper我需要檢查哪些viewcontroller用戶來。

if (screen1vc) 

{ 

} else if (screen2vc){ 

} 

我該怎麼辦,請幫我out.I想提出推動seague移動到commonvc

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

感謝

+0

你需要在'commonvc'檢查呢? 從哪個控制器創建? –

+0

爲什麼你需要知道?你的'commonvc'不需要知道哪個視圖控制器顯示它。 – rmaddy

回答

0

你可以在一個父控制器屬性常見的VC。將其設置在screen1vc和screen2vc中的prepareFor segue方法中。

現在,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堆棧然後

navigationcontroller.viewControllers[navigationcontroller.viewControllers.count - 2] 

會給你的UIViewController對象,你所需要的。

如果您提交視圖控制器,則self.presenting將爲您完成這項工作。

希望這會有所幫助!

0

您可以通過兩種方式

1.To獲得通過做像下面從navigationController viewControllers陣列前面的一個事情。

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

2.另一種方式在commonVC &填充所需的值創建字符串變量同時推到viewController.You可以做類似下面

在commonVC創建一個變量

var isFrom:String = "" 

分配推送使用commonVc對象之前的值。現在

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

在commonVC

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){ 

} 
相關問題