【问题标题】:iOS 11 refresh control + search bar = missing spinner when refreshingiOS 11 刷新控件 + 搜索栏 = 刷新时缺少微调器
【发布时间】:2018-03-29 03:45:42
【问题描述】:

我正在尝试在UITableViewController 上使用标准的UIRefreshControlUISearchController。然而,它看起来不像它应该做的那样。刷新时,滚动会使导航栏留下一个很大的空白区域,大概是微调器应该在的位置:

我有一个示例项目on GitHub。以下是控件的设置方式:

override func viewDidLoad() {
    super.viewDidLoad()

    let spinner = UIRefreshControl()
    spinner.addTarget(self, action: #selector(refresh), for: .valueChanged)
    refreshControl = spinner

    searchController = UISearchController(searchResultsController: nil)
    navigationItem.searchController = searchController
}

我已经尝试将刷新控件分配给UITableView 上的属性,而不是UITableViewController 上的属性,这并没有什么不同。

有人遇到过同样的问题吗?

【问题讨论】:

  • 我也看到了这个问题。如果我删除搜索栏或将搜索栏添加为表格视图的标题而不是将其设置为导航项,它对我来说可以正常工作。当导航栏尝试同时处理这两种情况时,这看起来像是一个错误。
  • 我也有这个问题。除非我通过“self.navigationItem.searchController = nil”删除搜索栏,否则我会崩溃。
  • 我与 Apple 取得了联系,他们已确认这是一个错误。

标签: ios uitableview ios11 uisearchcontroller uirefreshcontrol


【解决方案1】:

每次表格视图控制器出现在屏幕上时,只需重新创建并分配刷新控件。

如果您将UITableViewController 子类化:

class MyTableViewController: UITableViewController {

    ...

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        refreshControl = UIRefreshControl(...)
    }
}

如果你使用视图控制器包含:

class MyContainerViewController: UITableViewController {

    private let tableViewController = UITableViewController(style: .plain)

    ...

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        tableViewController.refreshControl = UIRefreshControl(...)
    }
}

【讨论】:

    【解决方案2】:

    你可以用旧的方式使用 UIRefreshController,就像这样:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        let spinner = UIRefreshControl()
        spinner.addTarget(self, action: #selector(refresh), for: .valueChanged)
        self.tableView.addSubview(spinner)
    
        searchController = UISearchController(searchResultsController: nil)
        navigationItem.searchController = searchController
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      相关资源
      最近更新 更多