Ios 如果在解雇的时候我没有';我不知道视图已完全创建?

Ios 如果在解雇的时候我没有';我不知道视图已完全创建?,ios,ios6,uiviewcontroller,uikit,uistoryboard,Ios,Ios6,Uiviewcontroller,Uikit,Uistoryboard,如果在放弃视图时我不知道该视图是否已完全创建,我如何优雅地放弃该视图 这是我的困境。该视图显示了从服务器请求的一些数据。因此,我从viewDidLoad异步发送服务器请求,并在请求失败与否时在两个观察者中等待 对于“dismissing”视图,我使用exit segue(故事板) 因此有两种情况: 调用viewdide后发生服务器端错误。然后我可以调用performsgue或self.navigationController.pop…,一切都很好 调用viewdide之前发生服务器端错误。在这

如果在放弃视图时我不知道该视图是否已完全创建,我如何优雅地放弃该视图

这是我的困境。该视图显示了从服务器请求的一些数据。因此,我从
viewDidLoad
异步发送服务器请求,并在请求失败与否时在两个观察者中等待

对于“dismissing”视图,我使用exit segue(故事板)

因此有两种情况:

  • 调用
    viewdide
    后发生服务器端错误。然后我可以调用
    performsgue
    self.navigationController.pop…
    ,一切都很好
  • 调用
    viewdide
    之前发生服务器端错误。在这种情况下,如何将用户导航到上一个视图
目前,我只是将服务器请求放到
viewdide
中,但这非常不酷,因为用户在很大一部分时间里都在看空视图:(

您将如何处理此问题?

更新 制作一面旗帜,即

@property (nonatomic, assign) BOOL requestFailedOrViewDidAppear;
在viewDidLoad或init方法的开头将其设置为NO。然后在服务器端错误处理程序中执行以下操作:

if (requestFailedOrViewDidAppear) {
    //return to previous view
}
else {
    requestFailedOrViewDidAppear = YES;
}
在ViewDidDisplay中也输入相同的代码


这在实现方面更加优雅。但是,如果您希望它在UI/UX方面更加优雅,请替换“//返回到上一个视图”使用创建并显示UIAlertView解释错误的代码。然后,当用户取消该警报视图时,您可以返回到上一个视图。

假设您的用户希望在显示的视图上显示一些信息,如果请求在
视图出现之前失败,我将等待视图出现,显示e错误,并关闭视图。否则,如果请求在
viewdide出现后失败,我只会显示错误并关闭请求观察方法上的视图。这将是我处理此问题的方法。

UIViewController
中出现,称为
\u appearState
。当它为2时,意味着视图具有出现。

如果服务器运行缓慢,并且在调用了
viewdide
之后出现错误事件,该怎么办?:)然后,或者制作另一个标志来检查是否调用了viewdide,或者只使用一个标志,然后在viewdide中将其设置为YES。在错误处理程序中,检查它是否设置为“是”,如果设置为“是”,则返回到上一个视图。但是最好把“requestFailed”改成别的名字。是的。。但是两个标志已经太多了。这应该是更美好的事情1.一面旗帜就足够了。但您应该将其命名为不同于requestFailed。就像RequestFailedOrviewDiAppear,但可能有更好的名称。我将更新答案以更好地解释它。我如何才能等待视图出现?使用一些布尔标志,在
viewdide
上更改标志的值,并观察其值,如果请求已失败,则显示错误并关闭视图。