gpt4 book ai didi

ios - 执行函数以从另一个类调用 performSegueWithIdentifier

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:04:37 24 4
gpt4 key购买 nike

我花了几个小时试图自己解决这个问题,但我放弃了!

我有一个主从安排,其中用户输入屏幕需要调用另一个类上的函数以发布到 Web 服务。异步调用完成后,该类将调用指定的函数。在这种情况下,我只是在测试,我想做的就是在网络服务接受用户输入后返回主屏幕。

当用户点击输入屏幕上的按钮(SetLocationViewController)时,异步操作在类APIPostClass 中被调用。完成后,我希望 SetLocationViewController 继续回到 MasterViewController。

在APIPostClass.m中(异步操作完成后调用)

-(void)callWhenDone {
NSLog(@"callWhenDone loaded.");

SetLocationViewController *SLVClassInstance = [[SetLocationViewController alloc] init];
[SLVClassInstance doSegue];
}

在 SetLocationViewController.m 中

-(void) doSegue {
NSLog(@"doSegue loaded");
[self performSegueWithIdentifier:@"SetLocationViewControllerManualUnwind" sender:self];
}

从 SetLocationViewController.m 上的操作调用 doSegue 确实有效,所以我知道我的 segue 没问题,但上面的方法不起作用。我得到错误原因:'Receiver () has no segue with identifier 'SetLocationViewControllerManualUnwind''

我猜原因是因为初始化 VC 的 alloc init 方式,但我不知道更好。因此,如何调用另一个类上的函数,就好像它是由它自己的类调用的一样?

最佳答案

创建一个委托(delegate),它会比通知更可靠、更快速。

@protocol APIPostDelegate <NSObject>
@required
-(void)OnRequestSucess;
@end

在您的 APIPost 中为委托(delegate)添加新属性

@interface APIPost : NSObject

@property (weak) id<APIPostDelegate> delegate;

在 SetLocationViewController 中实现 APIPostDelegate

SetLocationViewController.h

SetLocationViewController :NSObject<APIPostDelegate>

SetLocationViewController.m

-(void)OnRequestSucess
{
[self doSegue];
}

在调用 APIPost 上的方法之前,将 self 分配给委托(delegate)属性。

APIPost *apipost=[[APIPost alloc]init];
apipost.delegate=self;

[apipost <your api method>];

APIPost.m

[self.delegate OnRequestSucess];

希望这对您有所帮助。

关于ios - 执行函数以从另一个类调用 performSegueWithIdentifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24226570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com