【发布时间】:2019-11-27 06:28:29
【问题描述】:
我正在为导航返回操作创建一个自定义按钮。并在后退按钮单击时,推送未推送的不同视图控制器。后面的动作工作正常,但显示的加载器并不一致。这种情况下的最佳做法是什么?
后退代码如下:
@objc func backAction() -> Void {
self.showLoader { (status) in
if status {
DispatchQueue.main.async {
if let viewController = UIStoryboard(name: DFViewControllerNameConstant.MAIN, bundle: nil).instantiateViewController(withIdentifier: DFViewControllerNameConstant.DF_PREVIEW_ALL_TOUR_VIEW_CONTROLLER) as? DFPreviewAllPublishedCapturePanoramaViewController {
if let navigator = self.navigationController {
navigator.pushViewController(viewController, animated: true)
}
}
}
}
}
}
Show and remove loader 的代码是:
import UIKit
fileprivate var loaderView: UIView?
extension UIViewController {
func showLoader(completion: @escaping ((Bool)->())) {
loaderView = UIView(frame: self.view.bounds)
loaderView?.backgroundColor = UIColor.init(red: 0.4, green: 0.4, blue: 0.4, alpha: 0.4)
let loader = UIActivityIndicatorView(style: .white)
loader.center = loaderView!.center
loader.startAnimating()
loaderView?.addSubview(loader)
self.view.addSubview(loaderView!)
UIApplication.shared.beginIgnoringInteractionEvents()
completion(true)
}
func removeLoader() {
loaderView?.removeFromSuperview()
loaderView = nil
UIApplication.shared.endIgnoringInteractionEvents()
}
}
【问题讨论】:
-
请检查您的
self.navigationController不能为nil 吗? -
感谢重播,检查
self.navigationController != nil不工作。我遇到了加载器显示不一致的问题,推送视图控制器工作正常。 -
一致的意思?你能详细说明一下吗?
-
@SohilR.Memon 一致意味着每次单击后退按钮加载器视图时都应该显示。但就我而言,它有时会显示,有时不会。