2016-10-25 5 views
0

あるビューコントローラから別のビューコントローラにデータを渡そうとしています。物事を困難にするのは、最初のVCがハンバーガーメニュー(またはテーブルビューコントローラー)で、2番目のVCがタブバーコントローラーの内側にあることです。これはタブでは機能しないため、私はprepareforsegueでストーリーボード・セグを使うことはできません。明らかに、テーブルビューのセルを押すと、デリゲートメソッドを使用して、タブを動作させる唯一の方法です。IOS:プログラムでVCにデータを渡す

これまでは2つの方法を試していましたが、どちらも2番目のView Controllerの提示に成功しましたが、いずれの方法もデータを渡していません。何か提案をいただければ幸いです。

//方法1は機能しません。

- (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は機能しません。階層内の場所を使用してdestVCを参照しようとします。

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

最初の方法は正しいようですが、どのようなエラーが表示されますか?なぜ失敗するのでしょうか? – Merlevede

+0

私がdesVCのself.dataの値をログアウトすると、(ヌル) – 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機能で同じprint文を入れて次のように指定されたプロパティがあるmyVCにストーリーボード

- (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]; 
} 

//にその識別子を使用してdestVCを識別するためのデータを試行しますmyVCクラス。あなたはそれらを比較して、それらが本当に同じかどうかを見ることができます。

関連する問題