UIActivityIndicatorView в той же иерархии UITableView в UITableViewController - PullRequest
0 голосов
/ 25 мая 2018

У меня есть UIViewController, и я удалил UITableView и UIActivityIndicatorView в той же иерархии, и он работает нормально.

Но затем у меня есть UITableViewController, с UITableView, конечно, и я пытаюсь отбросить UIActivityIndicatorView ната же иерархия, что и в табличном представлении, но без удачи.Я знаю, что есть проблема с UITableViewController и UIViewController с табличным представлением, но как решить?

Эти два снимка экрана помогут понять проблему.

Способ, которым я хочу, чтобы это было:

enter image description here

Как это получается:

enter image description here

Ответы [ 3 ]

0 голосов
/ 25 мая 2018

При перетаскивании любого вида (независимо от того, является ли он UILabel или UIActivityIndicatorView или UIView ),

, если это выше ячейки, которую вы там поместили, она будет автоматически обрабатываться как TableViewHeader .

, если она будет ниже ячейки, которую вы там поместили,он будет автоматически обрабатываться как TableViewFooter .

Именно поэтому они находятся на одном уровне иерархии представления ячеек.

Если вы действительно хотите использоватьindicatorView на том же уровне, что и ваш tableView в вашем tableViewController, даже если вы программно создаете его и добавляете в self.view, он НЕ БУДЕТ работать, потому чтоtableViewController s self.view - это его представление контента, которое в любом случае можно прокручивать, что является своего рода обломом.У нас есть полный контроль только в UIViewController.

0 голосов
/ 25 мая 2018

Хорошо, ребята, я нашел еще одно решение.

Определите переменную внутри 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

, чтобы удалить его, когда он вам не нужен.

0 голосов
/ 25 мая 2018

Проблема в том, что с UIViewController он имеет self.view в качестве корневого представления, где вы можете добавлять любые подпункты, как вы делали, но вы не можете сделать это по крайней мере в IB с UITableViewController каккорневым представлением является сама таблица

Первый способ

добавьте его в код и управляйте положением при прокрутке tableView, поэтому измените его фрейм в scrollViewDidScroll, чтобы он осталсяв центре экрана во время загрузки

Второй способ

добавьте его в главное окно приложения и удалите по окончании загрузки

...