繁体   English   中英

故事板使用segue将数据从视图控制器传递到标签栏

[英]Storyboard pass data from view controller to tab bar with segue

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

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

不久,我想通过storyboard segue将数据从视图控制器传递到标签栏控制器页面。 这有什么方法吗?

这是解决方案;

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

这就是我解决问题的方法。 您可以使用此方法将数据从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...

    }
}
//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;

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

对于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对象,用于存储用户信息
  • 我的View控制器segue连接到故事板中的TabViewContoller,其中segue =“ userAccountSegue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM