背景
我正在构建一个iOS应用程序,其中StoryBoard
用于UI,AFNetworking
用于后端。在我的UIViewController
我有一些文本框。当用户点击提交UIButton
时,我正在向返回XML文件的Web服务进行AFNetworking调用。
问题
我使用StoryBoard
界面将按钮连接到UITableViewController
。最初这很好用,因为我在UITableViewController
内有了Web服务调用的代码。问题是,如果Web服务没有返回任何内容,我会得到一个空白UITableView
。因此,当按下按钮时,我将Web服务调用移动到要调用的UIViewController
。 OOPS!我进行了Web服务调用,并且在Web服务返回自prepareForSegue
以来的数据之前调用了Asynchronous
。
我的问题
UIViewController
。如果是这样,我该如何回来。我已经尝试了self.navigationController popViewController
但它在控制台中发出警告,删除视图控制器会使堆栈陷入困境。 答案 0 :(得分:2)
逐步发布回答以帮助其他可能需要帮助的人:
Connect the two ViewControllers in Storyboard which will create a segue.
您只需选择第一个视图控制器(确保使用蓝线突出显示viewController,并且您没有像图像视图或navigationItem那样选择。然后按住CTRL并单击目标视图控制器(您想要的位置)过渡到)。
中间的圆圈称为segue
。如果您点击它并转到右侧的属性面板,您会看到:
在标识符中输入您要调用此转换的名称:例如myNewPage。
每当您准备好调用下一个场景时。使用此委托方法将数据从一个控制器传递到另一个控制器或执行任何特殊操作:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NameOfDestinationController *dataViewController;
dataViewController = segue.destinationViewController;
if ([segue.identifier isEqualToString:@"nameOfYourSegueIdentifier"]) {
dataViewController.variable1 = self.variable1;
...
}
}
然后在我的情况下,我需要在AFNetworking网络服务电话取得成功后触发segue。所以在Success块中我添加了这一行:
[self performSegueWithIdentifier:@"nameOfYourSegueIdentifier" sender:self];
现在完美无缺!!!