【问题标题】:Storyboard pass data from view controller to tab bar with segue情节提要使用 segue 将数据从视图控制器传递到选项卡栏
【发布时间】:2012-09-21 01:35:11
【问题描述】:

我在标签栏控制器之前有一页(比如 X),它使用模型 segue 打开标签栏控制器。标签栏控制器的第一个屏幕也与 X 相同。

我想将数据从 X 传递到标签栏控制器的第一页。

简而言之,我想将数据从视图控制器传递到带有情节提要 segue 的标签栏控制器页面。有什么办法吗?

这里是解决方案;

    locationsHome* vc = [[locationsHome alloc] init];
    UITabBarController* tbc = [segue destinationViewController];
    vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0];

【问题讨论】:

  • 您似乎回答了您的问题。我以为你问的是如何将数据传递给segue.destinationViewController 的更基本的问题,但我很高兴看到你解决了你的问题。
  • 您可以发布您的解决方案作为答案并接受它。
  • 对不起 Tiago,我是这个网站的新手。我会按照你的建议去做,谢谢。

标签: ios xcode storyboard uistoryboardsegue


【解决方案1】:

这就是我解决问题的方法。您可以使用此方法将数据从 ViewController 传递到 TabBarController。

prepareForSegue 方法中使用此代码

locationsHome* vc = [[locationsHome alloc] init];
UITabBarController* tbc = [segue destinationViewController];
vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0];

像这样:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    NSString * segueIdentifier = [segue identifier];
    if([segueIdentifier isEqualToString:@"tabbarGo"]){

        locationsHome* vc = [[locationsHome alloc] init];
        UITabBarController* tbc = [segue destinationViewController];
        vc = (locationsHome *)[[tbc customizableViewControllers] objectAtIndex:0];

        etc...

    }
}

【讨论】:

  • 我添加了 prepareForSegue 方法。但是我未能使导航工作。知道为什么吗?
  • 你应该使用 UITabBarController 作为目标视图控制器而不是你应该给出索引号。
【解决方案2】:
//if sent to First Tab of Tab Bar Controller
UITabBarController *tabBarController = segue.destinationViewController;
UINavigationController *navigationController = (UINavigationController *)[[tabBarController viewControllers] objectAtIndex:0];
createTeamViewController *controller = (createTeamViewController *)[[navigationController viewControllers] objectAtIndex:0];

controller.userProfile = self.userProfile;

【讨论】:

    【解决方案3】:

    向目标视图控制器(子类标签栏控制器)添加一个属性,然后在源视图控制器中,实现prepareForSegue 以将信息传递给目标控制器。然后,您可以让目标视图控制器的 viewDidLoad 对源视图控制器的 prepareForSegue 中传递给它的数据进行操作。

    【讨论】:

      【解决方案4】:

      对于 Swift 2.2,我必须以这种方式修改接受的答案

      override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
      {
          if (segue.identifier == "userAccountSegue")
          {
              var firstTabViewController: UserAccountViewController = UserAccountViewController()
              let tabViewController: UITabBarController = segue.destinationViewController as! UITabBarController
              firstTabViewController = (tabViewController.customizableViewControllers![0] as! UserAccountViewController)
              firstTabViewController.userObj = arrayForTable![selectedIndex] as? User
      
          }
      }
      

      注意:以上代码片段的提示

      • User 是我的 Model 对象,用于存储用户信息
      • 我的视图控制器 segue 通过 segue = "userAccountSegue"
      • 连接到情节提要中的 TabViewContoller

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-08
        • 1970-01-01
        • 2017-12-13
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2014-09-12
        • 1970-01-01
        相关资源
        最近更新 更多