在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?
}
答案 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"];
}
}
}