无法从第二个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];
它不工作,我一直试图修复它有一段时间了。任何帮助都会很棒。谢谢
我想你只宣布了一个属性@property (nonatomic,assign) ViewController1 *MethodSave;
,但还没有分配这个属性。所以先分配它然后调用函数。
MethodSave = [ViewController1 new];
[self.MethodSave saveLocation];
也宣布属性强不分配@property (nonatomic,strong) ViewController1 *MethodSave;
这应该工作。
并尝试用骆驼案例声明变量。
你还在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];
您在这里有一个错字@property(非原子,分配)ViewController1 * MethodSave; 它看起来像MethodSave是一个类名,所以它与它相冲突。尝试用其他名称进行更改。 – 2014-10-08 14:09:54
它实际上被称为WeatherMethodSave,我得到的错误是说'未知的类型名'ViewController1',我已经导入类? – burrGGG 2014-10-08 14:14:30
您需要通过使用代表团 走这 http://stackoverflow.com/questions/24815259/iphone-call-function-from-another-view-controller – 2014-10-08 14:14:31