IOS:以编程方式将数据传递给VC

时间:2016-10-25 18:59:24

标签: ios uiviewcontroller properties

我正在尝试将一些数据从一个视图控制器传递到另一个视图控制器。让事情变得困难的是第一个VC是汉堡包菜单(或桌面视图控制器),第二个VC是标签栏控制器。我不能在prepareforsegue中使用storyboard segue,因为这不适用于制表符。显然,使标签工作的唯一方法是在按下表格视图的单元格时使用委托方法。

到目前为止,我已经尝试了两种方法,虽然它们都成功呈现了第二个视图控制器,但两种方法都没有传递数据。非常感谢任何建议。

//方法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不起作用。尝试使用故事板中的标识符来识别destVC

- (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的属性,如下所示:

@property (strong,nonatomic) NSString *data;

1 个答案:

答案 0 :(得分:0)

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

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

然后将相同的print语句放在myVC类的viewWillAppear函数中。您可以比较它们以确定它们是否确实相同。