2011-05-30 25 views
2

我有三個視圖控制器,它們互相推送到導航控制器上。查找哪個viewController爲父

ViewController1可推動VC2或VC3 VC2可以推動VC3

這意味着,無論是VC3由VC1或VC2打開。 VC1是UITableViewController的子類,VC2是UIViewController的子類。

現在,在VC3中,我想知道VC1或VC2是否創建了VC3。我怎樣才能做到這一點?

回答

5

您可以檢查;

[vc3 parentViewController]; 

返回UIViewController
根據你需要什麼,你可以做

if ([[vc3 parentViewController] isKindOfClass:[VC1 class]]) { 
    //has been pushed by VC1 
} 
else if ([[vc3 parentViewController] isKindOfClass:[VC2 class]]) { 
    //has been pushed by VC2 
} 
+0

嗯,我在VC3檢查,所以我想我會寫:'[自parentViewController]',是否正確?這個類不是UIViewController,但它是一個UINavigationController。至少這就是返回的結果:'[[self parentViewController] class]' – Linus 2011-05-30 13:28:01

+3

是的,你可以調用'[self parentViewController]'。這有點棘手,但你應該訪問UINavigationController中的UIViewControllers數組。這裏有一個解決方案: 'NSArray * array = [[self navigationController] viewControllers]; NSLog(@「parentViewController:%@」,[[array objectAtIndex:([array count] -2)] class]);' – Saphrosit 2011-05-30 13:44:05

+0

謝謝。很棒! – Linus 2011-05-30 14:46:13