我正试图创建一个 UITableViewController
,有 UINavigationBar
使用大标题。
我遇到的麻烦是,当在空表视图上使用拉动刷新时,加载指示器在大标题的文本后面。
如果我第二次拉动刷新,就不会出现这个问题。
我的视图控制器在这一点上非常简单
final class FeedSceneViewController: UITableViewController {
private var loader: FeedLoader?
convenience init(loader: FeedLoader) {
self.init()
self.loader = loader
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.refreshControl = .init()
load()
configureTableView()
configureUI()
}
func load() {
tableView.refreshControl?.set(isRefreshing: true)
loader?.load(then: { [weak self] _ in self?.refreshControl?.set(isRefreshing: false) })
}
}
private extension FeedSceneViewController {
func configureTableView() {
tableView.backgroundColor = .usingHex("fafafa")
tableView.tableFooterView = .init()
}
func configureUI() {
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.title = "Latest content"
}
}
看起来你是在配置了大导航之后才设置刷新控件的。
试试把顺序改成这样--
override func viewDidLoad() {
super.viewDidLoad()
load()
configureTableView()
configureUI()
}
.......
func configureTableView() {
tableView.backgroundColor = .usingHex("fafafa")
tableView.tableFooterView = .init()
tableView.contentInsetAdjustmentBehavior = .always
tableView.refreshControl = .init()
}
func configureUI() {
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.title = "Latest content"
}
也许你可以在你的viewDidLoad()中试试这个。
self.edgesForExtendedLayout = []
它使你的表格视图不与你的导航栏冲突。