IOS prepareForSegue成功传递数据但viewdidload清除了吗?

时间:2015-06-08 03:18:29

标签: ios uiviewcontroller

在UIViewController中我执行了SeSe到UIViewControllerB.And在PreperForSegue函数中,我使用set函数设置了一个强变量的B值。但是,当B的viewDidLoad()调用时,该值为nil。 有人帮帮我,告诉我为什么?

我的代码是:

UIViewController A:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
     CXPWDViewController *cxpwdViewController=[[CXPWDViewController alloc] init];
     //I can't use the segue.desinationViewController, cause it is a present modally , the desinationViewController is         navigationViewController.
     [cxpwdViewController setAction:@"EnterPasscode"];//here the cxpwdViewController .action is @"EnterPasscode"
}

UIViewController B:

-(void) viewDidLoad()
{
[super viewDidLoad];// here the cxpwdViewController .action is nil; Why?
}

2 个答案:

答案 0 :(得分:0)

 CXPWDViewController *cxpwdViewController=[[CXPWDViewController alloc] init];
 //I can't use the segue.desinationViewController

我不知道为什么你认为你不能使用segue目标视图控制器。但无论如何你当然无法做你想做的事情这个方式。您正在创建一个完全不同的 CXPWDViewController - 然后稍后将其销毁。你不会那么远!

答案 1 :(得分:0)

如果您要展示UINavigationViewController,则rootViewController控制器应该是您的CXPWDViewController。这样你就可以输入相同的东西。由于您正在创建另一个viewcontroller实例,因此无法获取该值。请尝试使用此代码。

UIViewController A:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
 {
     if([[segue destinationViewController] isKindOfClass:[UINavigationViewController class]])
      {
        UINavigationViewController* destinationNavController =(NavigationViewController*)[segue destinationViewController]; 
        CXPWDViewController *cxpwdViewController=(CXPWDViewController*)[destinationNavController.viewControllers firstObject];
        if([cxpwdViewController isKindOfClass:[CXPWDViewController class]])
        {
            [cxpwdViewController setAction:@"EnterPasscode"];
        }  
    } 
}