我正在构建一个iOS应用程序,其代码的某些部分依赖于从特定任务返回的成功/失败值。此任务涉及来自库的回调。我希望只有在回调函数返回成功/失败后才能返回此任务的返回值。但是,由于我编写了一个顺序代码,所以即使在回调返回成功/失败之前,也会返回返回值。如何确保在继续执行之前完成异步操作
我看着使用模态视图控制器,并从我的理解,我可以使任务从此视图控制器执行,然后返回代码。
但是,这也不符合我的要求,因为当启动回调序列的代码被执行时,我不希望显示新的视图控制器。虽然有一定的回调需要我提示用户提供信息。我在popover中做了这个,我考虑在popover模式中制作视图控制器。但是,回调仍然是主线程的一部分,当我的模拟(?)提供弹出窗口时,我不会收到它们。
随着我目前对这些概念的理解,我不知道如何继续。有什么办法可以在iOS中做到这一点?
编辑: 的代码做这样的事情
//In CustomTableViewController
-(void) someFunc
{
ENUM_NAME code = [TaskController startTheTask:args];
if(code == SUCCEEDED)
{
//Do Something
}
if(code == FAILED)
{
//Do Something Else
}
}
//In TaskController
-(ENUM_NAME) startTheTask:args
{
startWorkflow(args); //This function registers callback function with the library.
return finalCode; //This is returned even before it is set to SUCCEEDED/FAILED
}
-(void) onCallback:params
{
MSG_TYPE msg = [params getMsg];
if(msg == TASK_FAILED)
finalCode = FAILED;
if(msg == TASK_SUCCEEDED)
finalCode = SUCCEEDED;
if(msg == TASK_SHOW_PROMPT)
{
[PopOverController showPopOver];
}
}
-(void) onUserInfoAdded
{
//This is called when Confirm is clicked in the popover
continueWorkflow(params); //asks for the next callback to happen
}
-(void) onCancleClicked
{
//This is called when Popover is dismissed without entering Info
cancleWorkflow(params); //asks for result of the workflow through callback
}
你可以使用将被触发,一旦您的异步方法完成委托的方法。 – Larme
请添加一些代码 – suhit