繁体   English   中英

无法从第二个ViewController调用方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM