【发布时间】:2014-04-17 06:17:44
【问题描述】:
我正在构建一个 iOS 应用程序,其代码的某些部分依赖于从特定任务返回的成功/失败值。这些任务涉及来自库的回调。我希望仅在回调返回成功/失败后才返回此任务的返回值。但是由于我编写了一个顺序代码,因此甚至在回调返回成功/失败之前就返回了返回值。
我研究过使用模态视图控制器,据我了解,我可以让任务从这个视图控制器执行,然后返回代码。
但这也不符合我的要求,因为当执行启动回调序列的代码时,我不希望显示新的视图控制器。虽然有一定的回调需要我提示用户信息。我在弹出框中执行此操作,并且我考虑在弹出框模式中制作视图控制器。但是回调仍然是主线程的一部分,当我的弹出框以模态方式呈现时我不会收到它们(?)。
以我目前对这些概念的理解,我不知道如何继续。在 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
}
【问题讨论】:
-
你可以使用委托方法,一旦你的异步方法完成就会被触发。
标签: ios modalviewcontroller presentmodalviewcontroller