UITableViewController 中的 UIActivityIndicatorView 与 UITableView 在同一层次结构中
UIActivityIndicatorView in the same hierarchy of UITableView in UITableViewController
我有一个 UIViewController,我在同一层次结构中删除了一个 UITableView 和 UIActivityIndicatorView,它工作正常。
但是我有一个 UITableViewController,当然有一个 UITableView,我试着删除一个 UIActivityIndicatorView 与 Table 视图处于同一层次结构,但没有运气。我知道 UITableViewController 和 UIViewController 与 Table 视图有问题,但如何解决?
这两个屏幕截图将有助于理解问题。
我想要的样子:
结果:
问题是 UIViewController
它有一个 self.view
作为根视图,您可以在其中添加任何子项目,至少在以 UITableViewController
作为根视图的 IB 是 table 本身
第一种方式
将其添加到代码中,控件在 table视图滚动时的位置,因此在 scrollViewDidScroll
中更改其框架,使其在加载期间保持在屏幕中央
第二种方式
将其添加到应用程序的主要 window 并在加载完成后将其删除
当您拖放任何视图时(无论是 UILabel 或 UIActivityIndicatorView 或 UIView),
如果它 在您放置的单元格 之上,它将被自动视为 TableViewHeader。
如果它低于你放在那里的单元格,它将被自动视为 TableViewFooter。
这就是为什么它们处于同一单元格视图层次结构级别的原因。
如果您真的想在 tableViewController
中使用与 tableView
相同级别的 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
在不需要时删除它。
我有一个 UIViewController,我在同一层次结构中删除了一个 UITableView 和 UIActivityIndicatorView,它工作正常。
但是我有一个 UITableViewController,当然有一个 UITableView,我试着删除一个 UIActivityIndicatorView 与 Table 视图处于同一层次结构,但没有运气。我知道 UITableViewController 和 UIViewController 与 Table 视图有问题,但如何解决?
这两个屏幕截图将有助于理解问题。
我想要的样子:
结果:
问题是 UIViewController
它有一个 self.view
作为根视图,您可以在其中添加任何子项目,至少在以 UITableViewController
作为根视图的 IB 是 table 本身
第一种方式
将其添加到代码中,控件在 table视图滚动时的位置,因此在 scrollViewDidScroll
中更改其框架,使其在加载期间保持在屏幕中央
第二种方式
将其添加到应用程序的主要 window 并在加载完成后将其删除
当您拖放任何视图时(无论是 UILabel 或 UIActivityIndicatorView 或 UIView),
如果它 在您放置的单元格 之上,它将被自动视为 TableViewHeader。
如果它低于你放在那里的单元格,它将被自动视为 TableViewFooter。
这就是为什么它们处于同一单元格视图层次结构级别的原因。
如果您真的想在 tableViewController
中使用与 tableView
相同级别的 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
在不需要时删除它。