假设我有一个名为 vc1 的视图控制器,它有一个名为 property1 的综合属性,我想从另一个视图控制器 (vc2) 访问它并从 vc2 更改它。
现在@syntisize 创建的用于更改和获取属性的方法是实例方法,那么我怎样才能从另一个视图控制器获取它们(视图控制器在应用程序中是否有实例,如果有,它们是什么?)
只是为了清楚我正在使用情节提要,所以我从来没有真正实例化视图控制器......
假设我有一个名为 vc1 的视图控制器,它有一个名为 property1 的综合属性,我想从另一个视图控制器 (vc2) 访问它并从 vc2 更改它。
现在@syntisize 创建的用于更改和获取属性的方法是实例方法,那么我怎样才能从另一个视图控制器获取它们(视图控制器在应用程序中是否有实例,如果有,它们是什么?)
只是为了清楚我正在使用情节提要,所以我从来没有真正实例化视图控制器......
VC1.m:
-(void) yourMethod {
...
}
VC2.m
YOURViewController * vc2 = [[YOURViewController alloc]init];
[vc yourMethod];
[vc release];
确保在您的其他视图中导入您YOURViewController
的 .m 文件 类似的东西应该可以工作。
或者,如果您遇到问题,请在此处尝试本教程:
希望这可以帮助 :)
虽然您可以按照您描述的方式进行操作,但我认为通用技术(假设 VC1 与 VC2 有一个 segue)有点不同,其中 VC2 将具有一个由prepareForSegue
. 请参阅View Controller Programming Guide 中的在触发 Segue 时配置目标控制器。
您需要将情节提要视图与视图控制器链接起来,以便 vc1 的视图将使用 vc1 类等其余部分(我假设您已经这样做了,因为这在为不同视图编码时很重要)
然后你需要做的就是你在哪里调用属性所以让我们说viewDidLoad
方法,像这样声明视图控制器:
- (void) viewDidLoad {
vc1 *viewController;
// Now you change the variable I'll presume its a UILabel so I'll change its text
[viewController.property1 setText:@"I changed a different views UILabel"];
}
让我知道这是否有效......它之前对我有用,所以应该有效