ios - 不鼓励在分离的 View Controller 上呈现 View Controller - 屏幕 View 变黑

标签 ios swift mobile

我有两个 View Controller :VC1 和 VC2。从 VC1 中,按一个按钮会将应用程序导航到 VC2。 VC2 在 vi​​ewDidLoad() 中有一个网络请求函数,如果请求失败,它会显示警报。

如果一切正常,VC2 上没有请求失败,当我回到 VC1 时,它会调用 VC2 的 deinit 函数。

但是,如果请求失败并显示错误警报,则当我移回 VC1 时,将不会调用(VC2 的)deinit 函数。此外,当屏幕显示 VC1 后尝试显示该警报时,它会导致错误“不鼓励在分离的 View Controller 上呈现 View Controller ”,然后屏幕会变黑,导航栏和错误警报除外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)
    })
}

我在此处附上屏幕截图:

enter image description here

有人可以解决这个问题吗?如有任何帮助,我们将不胜感激,

露西·阮。

最佳答案

我在构建应用程序时遇到了同样的问题。为了解决这个问题,我尝试了很多修改,终于把错误信息去掉了。

我在第一个 VC 中制作了一个警报窗口,以给用户一些通知。我在-(void)viewDidLoad中编写了警报控制代码。我认为你做了同样的事情或者在 - (void)viewWillAppear 中做了同样的事情。

只需将警报代码移至 - (void)viewDidAppear 即可。然后,错误就会消失。

关于ios - 不鼓励在分离的 View Controller 上呈现 View Controller - 屏幕 View 变黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36216101/

相关文章:

ios - 使用 swift 播放实时音频

ios - 如果 registerForRemoteNotificationTypes : is not supported in iOS 8. 0 及更高版本,则为 iOS 构建

ios - 遍历 NSArray 并以 12 个为一组存储项目

swift - 试图计算时差,但收到否定答案

javascript - Dojo Toolkit 中的代码重用

iphone - 在后台运行的 ios 应用程序

java - 查询数据库内 Spinner 上的项目 - Android

iOS 5.1 在使用 Collection View 时崩溃

ios - 应用程序被 iOS 强制重启并使用新的隐私设置

ios - 我想将单选按钮方法与 swift 中的选择器语句连接起来