3

抱歉,如果我的术语有点偏离目标 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?

谢谢

4

2 回答 2

7

你需要投射它。

IE

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

那么您的其余代码将起作用:D

于 2012-10-03T13:06:45.837 回答
2

以防万一您不想导入该类FormController并继续使用它,您可以执行以下操作。真的很方便:

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

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

[self presentModalViewController:vc animated:YES];

注意:这仅适用于属性。

于 2013-07-01T10:22:39.150 回答