Ios 在视图控制器之间传输数据的新方法
我在Ios 在视图控制器之间传输数据的新方法,ios,uiviewcontroller,transfer,Ios,Uiviewcontroller,Transfer,我在UIViewController之间传输数据时遇到问题,在前面的问题中找不到答案 情况:我有第一个viewController(“CalViewController”),允许用户输入数据。然后,我用这些数据计算一个数字(例如,名为“卡路里”)。接下来的视图是两个UIViewController(DrinksViewController和FoodViewController)显示在TabBarController中,我需要“卡路里”值 我所尝试的: -prepareForSegue方法:它不起
UIViewController
之间传输数据时遇到问题,在前面的问题中找不到答案
情况:我有第一个viewController(“CalViewController”),允许用户输入数据。然后,我用这些数据计算一个数字(例如,名为“卡路里”)。接下来的视图是两个UIViewController
(DrinksViewController
和FoodViewController
)显示在TabBarController
中,我需要“卡路里”值
我所尝试的:
-prepareForSegue
方法:它不起作用,因为TabBarController
中的segue(序列图像板中的符号是两点之间的链接)与其他segue(序列图像板中的符号是通过门的箭头)不同
-“didSelectViewController”方法:此方法未“激活”以显示TabBarController的第一个视图。因此,我成功地将卡路里
转移到TabBarController中的第二个ViewController(即FoodViewController
),但没有转移到TabBarController中的第一个ViewController(即DrinkViewController
)
-调用“原始”值:这里是我在CalViewController
中所做的操作(导入DrinksViewController.h
后)
我不知道为什么第三种方法不起作用
问题:我的
卡路里值
没有从CalViewController
传输到DrinkViewController
。有什么想法吗?如果我正确理解了你的问题,那么以下几点在第一步应该是可行的
查看控制器CalViewController
:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"yourSegueToTabBarIdentifier"]) {
UITabBarController *tbc = [segue destinationViewController];
DrinksViewController *dvc = tbc.viewControllers[0];
dvc.caloriesImported = 456;
FoodViewController *fvc = tbc.viewControllers[1];
fvc.someProperty = someValue;
}
}
注意
DrinksViewController *dvc = [[DrinksViewController alloc] init];
dvc.caloriesImported = 456;
无法工作,因为它分配了一个新的DrinksViewController
实例
与选项卡栏控制器使用的实例完全无关。如果我正确理解了您的问题,那么以下内容在第一个示例中应该可以使用 查看控制器
CalViewController
:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"yourSegueToTabBarIdentifier"]) {
UITabBarController *tbc = [segue destinationViewController];
DrinksViewController *dvc = tbc.viewControllers[0];
dvc.caloriesImported = 456;
FoodViewController *fvc = tbc.viewControllers[1];
fvc.someProperty = someValue;
}
}
注意
DrinksViewController *dvc = [[DrinksViewController alloc] init];
dvc.caloriesImported = 456;
无法工作,因为它分配了一个新的DrinksViewController
实例
与选项卡栏控制器使用的实例完全无关。您需要获取选项卡栏控制器中已有的实例。您可以使用self.tabBarController.viewControllers[n]执行此操作,其中n将是0、1或2,具体取决于您尝试访问的控制器。您需要获取选项卡栏控制器中已有的实例。您可以使用self.tabBarController.viewControllers[n]执行此操作,其中n为0,1,或2取决于您尝试访问的控制器。可能您可以将用户输入保存在plist文件中,然后从其他视图控制器访问该文件中的数据。CAlViewController是否也在选项卡栏控制器中?可能您可以将用户输入保存在plist文件中,然后从其他视图控制器访问该文件中的数据。是否CAlViewController是否也在选项卡栏控制器中?