我已经检查了其他问题/答案,但没有一个对我有用。
我有很多视图控制器,它们在准备序列时从数据库中加载数据。因此,我将活动指示器如下:
func tableView / collectionView(didSelectRow / item){...
self.showSpinner()
self.performSegue(...) -> prepare(for segue...) : data gets loaded
self.removeSpinner()
}
具有在]中定义的功能>
import UIKit var aView : UIView? extension UIViewController{ func showSpinner(){ aView = UIView(frame: self.view.bounds) aView?.backgroundColor = UIColor(white: 0, alpha: 0.5) let ai = UIActivityIndicatorView(style: .large) ai.center = aView!.center ai.color = .red ai.startAnimating() aView?.addSubview(ai) self.view.addSubview(aView!) Timer.scheduledTimer(withTimeInterval: 20, repeats: false, block: {_ in self.removeSpinner()}) } func removeSpinner(){ aView?.removeFromSuperview() aView = nil } }
代码已执行(我检查了),但没有旋转器或背景较暗的视图的迹象。
即使在我定义中
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
并放入
activityIndicator.startAnimating() performSegue... activityIndicator.stopAnimating()
没有任何反应。视图层次结构中没有新元素(预期:带有活动指示器的视图,或者只有活动指示器)。怎么了?
更新:
如果我用]称呼>
func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { self.showSpinner() //show indicator return indexPath
所有代码(willSelect,DidSelect和Segue)都将执行,然后只有1/10秒钟,我才能看到微调器,同时过渡到下一个视图。但是,我需要在显示DidSelect的进一步代码之前先显示微调框]
我已经检查了其他问题/答案,但没有一个对我有用。我有许多视图控制器在准备任务期间从数据库加载数据。因此,我把...
感谢Bear Cahill的加油!这是解决方案:
问题是,有人告诉他们要向纺纱厂展示并进行定型。它在函数结束之前不这样做。函数结束后不会同时执行这两个操作,直到执行segue为止微调节目。您知道回去时显示b / c的地方。因此,您需要致电show spinner并允许控件返回到运行循环(让函数完成),然后调用执行segue以加载数据等。我建议您使用计时器:因此您可以致电showSpinner,然后启动一个计时器,并在计时器主体中调用执行segue。这样功能将结束,微调器将显示然后执行segue将被调用。只需将计时器设置为如0.01秒。