我有两个视图控制器:VC1和VC2。从VC1,按一个按钮将应用程序导航到VC2。 VC2在viewDidLoad()中具有网络请求功能,如果请求失败则显示警报。
如果一切正常,VC2上没有请求失败,当我回到VC1时,它会调用VC2的deinit功能。
但是,如果请求失败并显示错误警告,则当我移回VC1时,将不会调用(VC2的)deinit函数。此外,它会导致错误"在屏幕显示VC1,屏幕然后转动时,不鼓励在分离的视图控制器上显示视图控制器" 除导航栏外的黑色和VC2的错误警报显示在VC1上(原因是当VC2将出现错误警报时,用户突然按导航栏上的后退按钮返回上一屏幕)。我的警报是一个全局变量。
以下是我处理请求并在VC2上显示警报的代码:
func sendRegisterRequest() {
registerAPI.request(parameters: parameters) {
[weak self] (response) in
if let strongSelf = self {
strongSelf.handleResponse(response)
}
}
}
func handleResponse(response: Response<AnyObject, NSError>) {
let result = ResponseHandler.responseHandling(response)
if result.messageCode != MessageCode.Success {
// Show alert
handleResponseError(LocalizedStrings.registerFailedTitle, message: result.messageInfo, requestType: .Register)
return
}
}
func handleResponseError(title: String, message: String?, requestType: RequestType?) {
alert = UIAlertController(title: title, message: message, preferredStyle: .Alert)
let action = UIAlertAction(title: LocalizedStrings.okButton, style: UIAlertActionStyle.Default) { (action) -> Void in
self.handleAlertViewAction(requestType)
}
alert.addAction(action)
dispatch_async(dispatch_get_main_queue(), {
self.presentViewController(self.alert, animated: true, completion: nil)
})
}
我在这里附上截图:
有没有人可以解决这个问题?任何帮助都可以得到赞赏,
Lucy Nguyen。
答案 0 :(得分:0)
我在构建应用时遇到了同样的问题。为了解决这个问题,我尝试了很多更改,最后删除了错误消息。
我在第一个VC中创建了一个警告窗口,以便给用户一些通知。我在- (void)viewDidLoad
中编写了警报控制代码。我认为你做的相同或在- (void)viewWillAppear
。
只需将您的提醒代码移至- (void)viewDidAppear
即可。然后,错误就会消失。