我有一个有趣的问题。我有 3 个视图控制器(让我们将它们命名为 tableViewControler A、viewControler B、最终 tableViewController C)。它们都涉及过滤数据。
在 AI 中选择一个主要类别,在下一步中,我将所选类别的名称发送到 B(在 didSelectRowAtIndexPath 中像这样
FilterTableViewController *fViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"filterTableView"]; //B view controller
fViewController.passedValue = [categories objectAtIndex:indexPath.row];
) 控制器 B 的目的是对数据进行额外过滤(例如是否有剩余时间,哪个项目的价格最高等)。B 提到了passedValue(带有类别名称的字符串)。用户选择过滤器并单击按钮后,C 将被推送。
现在,在 C 中,我有公共 NSString“selectedCat”。在执行对 C 的 segue 之前,该字符串应在 B 中分配数据
FilterResultViewController *resViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"resController"]; //C viewController
resViewController.selectedCat = passedValue;
现在,在 C 中,我正在请求数据。这是 http 请求,我正在返回 JSON。这一切都很好。然而,我的问题是,selectedCat 是(NULL)。我制作了 NSLogs 来查看我的数据在哪里丢失了。我发现的更令人困惑。
这是我的控制台日志
2012-11-30 12:27:07.976 portal_postupne[4510:11303] selected sports //This NSLog is in A
2012-11-30 12:27:10.542 portal_postupne[4510:11303] category = (null)// This NSLog is in C
2012-11-30 12:27:10.653 portal_postupne[4510:11303] passed category: sports//This NSLog is in B and gets called on button click that pushes C
所以基本上我的 C 视图控制器在 B 之前以某种方式被调用。我想这就是我的类别为空的原因。我还尝试在 A 中实例化 C 并在 A 中设置类别值。再次为 Null。
接下来,我在 viewWillAppear 方法中做我的表格视图。但是我稍后将其移至 viewDidLoad ,但这并没有解决我的问题。
请帮忙 :)