从另一个视图控制器访问ViewController的实例方法

时间:2012-07-07 15:35:51

标签: objective-c ios properties uiviewcontroller instance

假设我有一个名为vc1的视图控制器,它是一个名为property1的合成属性,我想从另一个视图控制器(vc2)访问它并从vc2更改它。

现在@syntisize创建的用于更改和获取属性的方法是实例方法,因此如何从另一个视图控制器获取它们(视图控制器是否在应用程序中有实例,如果是,它们是什么?)

为了清楚我正在使用故事板,所以我从未真正实例化视图控制器......

3 个答案:

答案 0 :(得分:0)

VC1.m:

-(void) yourMethod {
     ...
}

VC2.m

YOURViewController * vc2 = [[YOURViewController alloc]init];
[vc yourMethod];
[vc release];

确保在您的其他视图.m文件中导入YOURViewController 这样的事情应该有效。

或者如果您遇到问题,请在此处尝试本教程:

Tutorial on How-To Pass Data Between Two View Controllers

希望这会有所帮助:)

答案 1 :(得分:0)

虽然您可以按照描述的方式进行操作,但我认为常用技术(假设VC1与VC2有一个segue)有点不同,其中VC2将具有由prepareForSegue设置的属性。请参阅View Controller编程指南中的Configuring the Destination Controller When a Segue is Triggered

答案 2 :(得分:0)

您需要将故事板视图与视图控制器链接起来,以便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"];
}

让我知道这是否有效......它之前适合我的工作