我在 UIViewController
之间传输数据时遇到问题,并且在之前的问题中找不到答案。
情况: 我有一个允许用户输入数据的第一个 viewController('CalViewController')。然后我用这些数据计算一个数字(例如名为“卡路里”)。接下来的 View 是在 TabBarController
中显示的两个 UIViewController
(DrinksViewController
和 FoodViewController
),我需要“卡路里”的值'.
我尝试过的:
-prepareForSegue
方法:它不起作用,因为 TabBarController
中的 segues( Storyboard中的符号是两点之间的链接)与其他方法不同( Storyboard中的符号是箭头)一扇门)。
-'didSelectViewController' 方法:此方法未“激活”以显示 TabBarController 的第一个 View 。所以我成功地将 Calories
传输到 TabBarController 中的第二个 ViewController(即 FoodViewController
),但没有传输到 TabBarController 中的第一个 viewController(即 DrinksViewController
).
-调用“原始”值:这是我在 CalViewController
中所做的(在导入 DrinksViewController.h
之后)
DrinksViewController *dvc = [[DrinksViewController alloc] init];
dvc.caloriesImported = 456;
我不知道为什么这第三种方式不起作用。
问题:我的Calories
值没有从CalViewController
传输到DrinksViewControlller
。有什么想法吗?
最佳答案
如果我正确理解你的问题,下面的应该首先工作
View Controller 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
的新实例
与标签栏 Controller 使用的实例完全无关。
关于ios - 在 View Controller 之间传输数据的新方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165514/