[英]Can't call method from second ViewController
我在构建应用程序时遇到问题。 我试图在当前的ViewController2中从ViewController1调用一个方法。
在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];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.