无法从第二个ViewController调用方法

问题描述:

我在创建应用程序时遇到问题。我想从我当前的ViewController2中的ViewController1中调用一个方法。无法从第二个ViewController调用方法

在我的ViewController1的.h文件中,我声明了方法,使其可见。

-(void)saveLocation; 

在我ViewController2.h文件我有以下

#import "ViewController1.h" 



@interface ViewController2 : UIViewController 

@property (nonatomic,assign) ViewController1 *MethodSave; 

@end 

,并在我的ViewController2.m

[self.MethodSave saveLocation]; 

它不工作,我一直试图修复它有一段时间了。任何帮助都会很棒。谢谢

+0

您在这里有一个错字@property(非原子,分配)ViewController1 * MethodSave; 它看起来像MethodSave是一个类名,所以它与它相冲突。尝试用其他名称进行更改。 – 2014-10-08 14:09:54

+0

它实际上被称为WeatherMethodSave,我得到的错误是说'未知的类型名'ViewController1',我已经导入类? – burrGGG 2014-10-08 14:14:30

+0

您需要通过使用代表团 走这 http://*.com/questions/24815259/iphone-call-function-from-another-view-controller – 2014-10-08 14:14:31

我想你只宣布了一个属性@property (nonatomic,assign) ViewController1 *MethodSave;,但还没有分配这个属性。所以先分配它然后调用函数。

MethodSave = [ViewController1 new]; 
[self.MethodSave saveLocation]; 

也宣布属性强不分配@property (nonatomic,strong) ViewController1 *MethodSave;这应该工作。

并尝试用骆驼案例声明变量。

+0

它仍然给我同样的错误,ViewController1是未知的类型名称。可能我没有正确导入。在ViewController2我#import“ViewController1”。以为这是我需要的一切? – burrGGG 2014-10-08 14:37:50

+0

@burrGGG我已经更新了我的答案,请再试一次,让我知道是否有问题。 – iHulk 2014-10-08 14:54:56

你还在ViewController1中导入ViewController2吗? 根据我自己的Google搜索,你的问题可能是循环依赖。

如果是这种情况,不是在ViewController2中导入ViewController1,而是在ViewController2.h中创建一个协议,并用符合该协议的ID替换ViewController1属性。

添加在ViewController2.h如下:

@protocol ViewController2Delegate<NSObject> 
@required 
-(void)saveLocation; 
@end 

@interface ViewController2:UIViewController 
@property id<ViewController2Delegate> *delegate; 
@end 

,并添加这ViewController1.h:

@interface ViewController1:UIViewController <ViewController2Delegate> 

,然后设置委托ViewController1的一个实例(如果你加载ViewController1中的ViewController2,它会是self),并确保从ViewController2中删除导入。

我正在做这个记忆,所以它可能无法复制和粘贴,但希望这可以指出你在正确的方向。

试试这个,

ViewController1 *MethodSave = [[ViewController1 alloc]init]; 
[MethodSave saveLocation];