【发布时间】:2020-05-22 16:38:37
【问题描述】:
我有一个 UIActivityIndicatorView,所以当我尝试在搜索栏中搜索时,它会在数据进入之前先加载。我在 UIViewController 扩展中制作微调器以进行动画处理并从视图中删除动画。但不知何故,当我尝试使用断点时,我无法弄清楚为什么我要删除的视图没有被删除。我创建的函数dismissLoading没有被调用,为什么会发生?有人能帮我吗。这是我的代码
fileprivate var containerView: UIView!
extension UIViewController {
func showLoadingView() {
containerView = UIView(frame: view.bounds)
view.addSubview(containerView)
containerView.backgroundColor = .systemBackground
containerView.alpha = 0.0
UIView.animate(withDuration: 0.25) { containerView.alpha = 0.8 }
let activityIndicator = UIActivityIndicatorView(style: .large)
containerView.addSubview(activityIndicator)
activityIndicator.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
activityIndicator.centerYAnchor.constraint(equalTo: view.centerYAnchor),
activityIndicator.centerXAnchor.constraint(equalTo: view.centerXAnchor)
])
activityIndicator.startAnimating()
}
func dismissLoadingView() {
DispatchQueue.main.async {
containerView.removeFromSuperview()
containerView = nil
}
}
}
// This is my PhotosViewController
extension PhotosViewController: UISearchResultsUpdating {
func updateSearchResults(for searchController: UISearchController) {
guard let searchText = searchController.searchBar.text, !searchText.isEmpty else {
dataSource.data.value.removeAll()
viewModel.isSearching.value = false
return
}
photoName = searchText
viewModel.isSearching.value = true
showLoadingView()
if let photoName = photoName {
viewModel.getPhoto(query: photoName) { [weak self] error in
self?.dismissLoadingView()
print(error)
}
}
}
}
【问题讨论】:
-
尝试打印
self以及里面的错误和getPhoto告诉我你得到了什么。 -
@Frankenstein 没有打印任何东西,我在尝试打印时使用断点(self)和错误
标签: ios swift uiview uiactivityindicatorview