我有一个viewController
,它有一个按钮,当点击该按钮时,它会动态地创建对另一个viewController
类的引用,并且在该过程中也为该设置设置参数viewController
。我对循环做这个里面如下:如何访问一个动态传递给iOS中的子viewController的参数?
-(void) clickOnButton:(id)sender {
for (PersonObject *checkPerson in [DataModel sharedInstance].personList) {
if (((UIControl*)sender).tag == checkPerson.personID) {
ParentViewController *parentView = [[NSClassFromString(checkPerson.childViewController) alloc] init];
parentView.personName = checkPerson.name;
NSLog(parentView.personName);
[self.navigationController pushViewController:parentView animated:YES];
}
}
}
在时生成的的viewController和该用户发送到,我有下面的代码在我viewDidLoad方法:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSLog(@"Hello %@", personName);
UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 150, 35)];
[title setCenter:CGPointMake(self.view.frame.size.width/2, 27)];
[title setBackgroundColor:[UIColor clearColor]];
[title setTextAlignment:NSTextAlignmentCenter];
[title setFont:[UIFont boldSystemFontOfSize:15]];
[title setText:personName];
[self.view addSubview:title];
}
当我运行我的代码,第一个viewController为我提供了personName参数的NSLog的正确输出,但是,第二个viewController语句中的方法viewDidLoad中的NSLog()显示我的personName值为零,并且没有任何显示为我的viewController的标题。
参数personName的类型为NSString,并且在父级viewController类以及子viewController类(有几个viewController类扩展了这一个父级)中都可以找到。我如何动态创建子viewController对象,并让它捕获使用父级viewController发送给它的正确参数值?
它被宣布为(非原子,保留) – syedfa
作为旁白(与你的问题无关),我注意到你宣布你的财产为'retain'。如果你使用ARC,你应该用'strong'替换'retain'。如果你没有使用ARC,那么你的代码可能有泄漏,因为当你''''''''''''''''ParentViewController''时,你应该也可以'autorelease'。 – Rob