2014-04-18 37 views
-4

我在containerview中有viewA和viewB。如何將變量傳遞給另一個視圖iOS

我通過委託將var從viewA傳遞到containerviewcontroller。我需要將它從我的containerviewcontroller傳遞給tableviewcontroller。我嘗試了兩種方式,一種是我能夠通過它的方式,但我無法訪問容器視圖中的viewA。我可以用第二種方法打開viewA,但是Var不會通過。

請幫忙。

我的故事板流程如下。

containerview - > tabbarviewcontroller - > navigationviewcontroller - > tableviewcontroller

(void)openSavedProjectAt:(NSNumber *)index 
{ 
    //delegate from another class 
    // works, and index value gets passed, but menu button doesn't work after, cuz didn't push with container? 
    /* 
    IncomeViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"incomeList"]; 
    [incomeNav pushViewController:vc animated:YES]; 
    vc.projectIndexToOpen = index; 
    */ 
    // the value doesn't get passed, but everything else works 
    /* 
    IncomeViewController *vc = [[IncomeViewController alloc]init];  
    vc.projectIndexToOpen = index; 
    */  
    [self menuButtonPushed]; // close side menu 
} 
+0

它不是重複的 - 他知道如何通過,認爲他有問題,這是他的問題,而不是一般情況下,他爲什麼在他的具體情況中遇到問題。 – Gruntcakes

回答

0

如果這是你的結構,

containerview - > tabbarviewcontroller - > navigationviewcontroller - > tableViewController

思考的關係,你把它們放在一起。 tabBarController是containerViewController的childViewControllers [0](假設你只有一個孩子)。導航控制器是標籤欄控制器的viewControllers數組中的控制器之一 - 如果它是第一個然後viewControllers [0]。該表視圖控制器導航控制器的topViewController,所以把所有的一起,你得到的,

TableViewController *tvc = (TableViewController *)[(UINavigationController *)[(UITabBarController *)self.childViewControllers[0] viewControllers][0] topViewController]; 

這是一種醜惡來解析,因此它會更容易理解爲多行,

UITabBarController *tbc = self.childViewControllers[0]; 
UINavigationController *nav = tbc.viewControllers[0]; 
TableViewController *tvc = (TableViewController *)nav.topViewController; 

使用tvc參考,您現在可以傳遞所需的對象。

+0

感謝您的幫助。似乎工作,但我不知道如果瓦爾已通過,有沒有辦法重新加載整個talbeviewcontroller? – gt3240

+0

@gt3240,如果你想重新加載整個表,使用[self.tableView reloadData]; – rdelmar

+0

reloadData只重新載入表,有沒有一種方法來重新加載整個視圖? – gt3240

相關問題