使用带有故事板的instantiateViewControllerWithIdentifier传递属性值

时间:2012-10-03 13:03:39

标签: objective-c ios xcode

道歉,如果我的术语有点偏,对客观C来说是新的! 我试图将值从一个UIViewController类传递给另一个。我正在使用故事板。我可以使用以下代码显示第二个ViewController:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"FormView"];
[self presentModalViewController:vc animated:YES];

工作正常。在我的第二个ViewController(FormView)头文件中,我设置了如下属性:

@interface FormController : UIViewController {
NSString *selectedBooking;
}
@property (nonatomic, retain) NSString *selectedBooking;
@end

如何从第一个控制器“传递值”到第二个控制器?据我所知,我必须像这样设置属性:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"FormView"];
vc.selectedBooking = @"test";
[self presentModalViewController:vc animated:YES];

这给了我错误:在'UIViewController'类型的对象上找不到属性'selectedBooking'。

设置属性的正确方法是什么?我应该使用其他东西而不是instantiateViewControllerWithIdentifier吗?

由于

2 个答案:

答案 0 :(得分:7)

你需要施展它。

FormController *fc = (FormController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"FormView"];
fc.selectedBooking = @"test";
[self presentModalViewController:fc animated:YES];

然后你的其余代码将起作用:D

答案 1 :(得分:2)

如果您不想导入课程FormController并继续使用它,您可以按照以下步骤操作。非常方便:

UIStoryboard *mainStoryboard = ..
UIViewController *vc = ...
  

[vc setvalue:@“test”ForKey:@“selectedBooking”]; //使用KVC

[self presentModalViewController:vc animated:YES];

注意:这仅适用于属性。

相关问题