0

嗨,我是 iphone 开发的新手,正在使用故事板做我的项目,在我的项目中,我有登录 viewController,如果登录成功,它将转到 tabbarcontroller。在 tabbarController 中,它具有三个 viewController。在 tabbarController 和三个视图控制器之间我有一个导航控制器。现在的问题是我必须将数据从 loginviewController 传递到 tabBarcontroller 到 navigationController 。我不知道该怎么做请帮助我..提前感谢我使用此代码将数据从登录控制器传递到 tabbarcontroller

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

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

        EventdashViewController *dc = [[EventdashViewController alloc] init];
        FeedDashViewController *fc = [[FeedDashViewController alloc]init];
        NewsDashViewController *nc = [[NewsDashViewController alloc]init];
        UITabBarController* tbc = [segue destinationViewController];
        dc = (EventdashViewController *)[[tbc customizableViewControllers] objectAtIndex:0];
        dc.memberid = userid1;
        NSLog(@"%d",dc.memberid);
        fc = (FeedDashViewController *) [[tbc customizableViewControllers]objectAtIndex:1];
        fc.memberid=userid1;
        NSLog(@"%d",fc.memberid);
        nc = (NewsDashViewController *)[[tbc customizableViewControllers]objectAtIndex:2];
        nc.memberid = userid1;
        NSLog(@"%d",nc.memberid);
    }
}

如何将数据从视图控制器传递到标签栏控制器到导航控制器?

4

1 回答 1

0

首先,看起来您要做的是将数据传递给导航控制器(dc、fc 和 nc)的根视图控制器,而不是导航控制器,这是您应该做的。问题是,可定制的ViewControllers 将返回导航控制器,而不是它们的根视图控制器。此外,您使用 alloc init 的三行是错误的,而且无论如何都没用,因为您重新定义了 dc、fc 和 nc 是几行之后的内容——如果您在情节提要中设置了这一切,则标签栏控制器的当标签栏控制器被实例化时,内容控制器都会被实例化。你应该拥有的是:

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

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

        UITabBarController* tbc = [segue destinationViewController];
        dc = (EventdashViewController *)[(UINavigationController *)tbc.viewControllers[0] topViewController];
        dc.memberid = userid1;
        NSLog(@"%d",dc.memberid);
        fc = (FeedDashViewController *) [(UINavigationController *)tbc.viewControllers[1] topViewController];
        fc.memberid=userid1;
        NSLog(@"%d",fc.memberid);
        nc = (NewsDashViewController *)[(UINavigationController *)tbc.viewControllers[2] topViewController];
        nc.memberid = userid1;
        NSLog(@"%d",nc.memberid);
    }
}
于 2013-09-04T15:17:56.047 回答