iOS:使用故事板的标签栏视图控制器

时间:2013-06-07 19:53:31

标签: ios uitabbarcontroller

我正在努力完成以下任务:

我想做的是:

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

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

感谢。

CODE:

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];

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>

它们都是空的。

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

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

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

1 个答案:

答案 0 :(得分:0)

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