[英]UIActivityIndicatorView in a UITableViewController
[英]UIActivityIndicatorView in the same hierarchy of UITableView in UITableViewController
问题是,使用UIViewController
它具有一个self.view
作为根视图,您可以在其中添加任何子项,就像在IB中使用UITableViewController
那样,至少不能在IB中这样做,因为根视图是表本身
第一种方式
将其添加到代码中,并且控件在tableView滚动时处于位置,因此在scrollViewDidScroll
更改其框架,以便在加载期间它位于屏幕的中心
第二种方式
将其添加到应用程序的主窗口中,并在加载完成后将其删除
当您拖放任何视图时(无论是UILabel还是UIActivityIndicatorView或UIView ),
如果它在您放置的单元格上方 ,它将被自动视为TableViewHeader 。
如果它在您放置的单元格下面 ,它将被自动视为TableViewFooter 。
这就是为什么它们处于相同的单元格视图层次结构的原因。
如果您真的想在tableView
中的tableViewController
同一级别使用indicatorView
,即使您以编程方式创建它并将其添加到tableviewcontroller
的self.view
,它也将无法正常工作,因为tableViewController
的self.view
是它的内容视图,无论如何都可以滚动,这简直太糟糕了。 我们只有UIViewController
拥有完全控制权。
好的,伙计们,我找到了另一个解决方案。
在UITableViewController
定义一个变量
weak var spinner: UIActivityIndicatorView!
然后在viewDidLoad
方法中做到这一点(希望代码是不言自明的)
let activityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .gray)
tableView.backgroundView = activityIndicatorView
tableView.separatorStyle = .none
self.spinner = activityIndicatorView
然后在需要显示它时调用spinner.startAnimating()
,然后
self.spinner.stopAnimating()
self.tableView.separatorStyle = .singleLine
在不需要时将其删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.