【问题标题】:iOS: tab bar view controller using storyboardiOS:使用情节提要的标签栏视图控制器
【发布时间】:2013-06-04 05:22:43
【问题描述】:

我正在努力完成以下工作:

我想做的是:

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

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

谢谢。

代码:

UITabBarController <em>tabBarController = (UITabBarController</em>) 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>

我还尝试在 MainViewController 中创建 UI 表视图和结果视图控制器,并将数据传递给它们(甚至在它们显示之前),但是在显示这些控制器时不会出现任何数据。我确保正确分配和初始化这些控制器,并且 NSLog 显示这些控制器中的实例方法被调用,但仍然没有显示数据,即使控制器显示在选项卡栏视图控制器中,当它们显示时也是如此。

更新 2:

现在我正在尝试执行以下操作:

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

当我打电话给这些时:
NSLog(@"%@", [self.tabBarController class]);
NSLog(@"%@", [self.tableViewController class]);
NSLog(@"%@", [self.resultViewController 类]);

它们都是空的。

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

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

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

【问题讨论】:

  • 显示代码。您是在 Interface Builder 中使用“嵌入标签栏控制器”选项还是您自己做的?

标签: ios uitabbarcontroller


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

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多