我正在尝试将一些数据从一个视图控制器传递到另一个视图控制器。让事情变得困难的是第一个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;
答案 0 :(得分:0)
MyVC *destVC = [navController.viewControllers objectAtIndex:0];
//Print this and get the address.
NSLog(@"destVC is: %@ at: %p", destVC, destVC);
然后将相同的print语句放在myVC类的viewWillAppear函数中。您可以比较它们以确定它们是否确实相同。