0

我正在尝试完成以下任务:

我想做的是:

1.) 当用户单击 UIViewController 中的按钮时,它将检索项目列表。
2.) 然后这些项目将显示在 UITableView 中。
3.)最后项目的数量将显示在第三个视图上(不是由 UITableView 发起的)

我管理上述所有内容,除了我想将所有这些控制器包装在自定义标签栏控制器中。但是数据没有从 UIViewController 传递到 UITableView 或其他视图。我正在使用 Storyboard,我连接了标签栏控制器和其他 3 个控制器作为视图控制器。我尝试使用 UIStoryboard 方法实例化 UITableView 和 UIView 控制器并创建这些控制器的实例并将数据发送给它们,控制器显示在标签栏控制器中,但数据不是。顺便说一句,我没有使用 Segue。我在这里错过了什么吗?

谢谢。

代码:

UITabBarController tabBarController = (UITabBarController) self.window.rootViewController;

    UIStoryboard *storyboard1 = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
    mainViewController *mainController = (mainViewController*)[storyboard1 instantiateViewControllerWithIdentifier:@"mainController"];

    UIStoryboard *storyboard2 = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
    tableViewController *tableview = (tableViewController*)[storyboard2 instantiateViewControllerWithIdentifier:@"tableviewController"];

    UIStoryboard *storyboard4 = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
    resultController *mapView = (resultController*)[storyboard4 instantiateViewControllerWithIdentifier:@"resultView"];</code>

I have tried also creating the UI Table View and the result view controller in MainViewController and pass data to them (before they are even displayed), but no data is ever present when these controllers are displayed. I made sure I alloc and init these controllers properly and NSLog shows that the instance methods in these controllers are called, but still no data is shown, even though the controllers are displayed in tab bar view controller, when they are displayed.

UPDATE 2:

Now I am trying to do the following:

self.tableviewController = [self.tabBarController.viewControllers objectAtIndex:1];
self.resultViewController = [self.tabBarController.viewControllers objectAtIndex:2];

And when I call these:
NSLog(@"%@", [self.tabBarController class]);
NSLog(@"%@", [self.tableViewController class]);
NSLog(@"%@", [self.resultViewController class]);

它们都是空的。

基本上,我有 3 个视图控制器作为“视图控制器”使用情节提要连接到 UITabbarController。主视图控制器(在 UITabbarController 中的索引 0 处),我从上面调用它,只有一个 UIButton。一旦按下,它将获取一个字符串列表并将其发送到表视图(在 UITabbarController 中的索引 1 处)和最后一个视图控制器(在 UITabbarController 中的索引 2 处)它将只显示字符串的数量作为结果,它从主视图控制器接收,而不是从表视图。

我没有在我的设置中使用任何 UINavigationController。

我希望能够通过单击 UITabbarController 上的栏项选项卡在显示它们之前触发表视图和结果视图控制器。通过触发,我的意思是数据将被发送到表视图和结果视图,即使它们尚未显示。

4

1 回答 1

0
  1. 您提供的代码对于您想要实现的目标是不必要且错误的。(通常你应该有一个 UIStoryboard 实例。)阅读文档
  2. 您没有写任何关于如何尝试实现视图控制器之间的通信的内容。有几种方法。但是使用委托。阅读文档
  3. 如果您回复评论,您应该使用 @ 字符后跟 SO 用户名,以便通知他您的更新。
于 2013-06-07T20:48:58.440 回答