2016-10-25 42 views
0

我試圖將一些數據從一個視圖控制器傳遞到另一個視圖控制器。造成困難的是第一個VC是漢堡菜單(或tableview控制器),第二個VC是在標籤欄控制器內部。我不能使用與prepareforsegue一起的故事板segue,因爲這不適用於製表符。顯然,讓頁面工作的唯一方法是在按下表格視圖的單元格時使用委託方法。IOS:以編程方式將數據傳遞給VC

到目前爲止,我已經嘗試了兩種方法,雖然他們都成功地呈現第二個視圖控制器,但兩種方法都不傳遞數據。將不勝感激任何建議。

//方法1不起作用。嘗試使用它在層次結構中的位置引用destVC

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    mainTabVC *tabBarController = (mainTabVC *)self.revealViewController.frontViewController; 
    UINavigationController *navController = tabBarController.viewControllers[0]; 
    myVC * destVC = [navController.viewControllers objectAtIndex:0]; 
    [navController popToRootViewControllerAnimated:NO]; 
    tabBarController.selectedIndex = 0; 
     destVC.data = @"Data Point"; 
    [self.revealViewController pushFrontViewController:tabBarController animated:YES]; 
} 

//方法2不起作用。試圖利用其標識符故事板

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    mainTabVC *tabBarController = (mainTabVC *)self.revealViewController.frontViewController; 
    UINavigationController *navController = tabBarController.viewControllers[0]; 
     [navController popToRootViewControllerAnimated:NO]; 
    tabBarController.selectedIndex = 0; 
    UIStoryboard *storyBoard = self.storyboard; 
    myVC *destVC = 
    [storyBoard instantiateViewControllerWithIdentifier:@"myVC"]; 
     destVC.data = @"data point"; 
    [self.revealViewController pushFrontViewController:tabBarController animated:YES]; 
} 

//在myVC有一個名爲data屬性如下識別destVC:

@property (strong,nonatomic) NSString *data; 
+0

第一種方法似乎是正確的,但是你得到了什麼錯誤?或者爲什麼會失敗? – Merlevede

+0

當我在desVC中註銷self.data的值時,它顯示(null) – user6631314

+1

爲什麼不使用'Notification'? – Adeel

回答

0
MyVC *destVC = [navController.viewControllers objectAtIndex:0]; 

//Print this and get the address. 
NSLog(@"destVC is: %@ at: %p", destVC, destVC); 

然後把相同的打印語句的viewWillAppear中功能myVC類。你可以比較它們,看看它們是否確實相同。

相關問題