【问题标题】:UISearchController add's offset while editingUISearchController 在编辑时添加偏移量
【发布时间】:2015-08-29 03:31:19
【问题描述】:

UISearchController 在编辑开始时添加一个偏移量。在横向模式下它工作得很好,但在纵向模式下却不行。

情节提要中是否有任何设置可以帮助解决此问题。

以下有效,但显示了一个动画,它在 +320 处然后又回到 -320。

func updateSearchResultsForSearchController(searchController: UISearchController) {
        self.mySearchContorller.searchBar.frame=CGRectMake(-320, 0, self.myTable.frame.size.width, 44.0)

    }

我使用了带有segue(显示细节)的故事板。附件是故事板的屏幕截图。

【问题讨论】:

  • 你是如何展示 UISearchController 的?它是从 SplitViewController 呈现还是从 DetailViewController 呈现?
  • 它显示为 DetailViewControllrt(在 UINavigationCOntroller 内)。从 UI 中,我们可以看到它添加了 320pt 的偏移量(主列表的宽度)。不知道怎么解决,卡住了。

标签: ios swift uinavigationbar uisearchbar uisearchcontroller


【解决方案1】:

下载您的项目并使用它,似乎问题就在这里:

self.tblSearchController.definesPresentationContext = true 更改为
definesPresentationContext = true

另外,你正在继承UITableViewController,不要创建你自己的表,而是将一个表拖到你的情节提要中并使用它。以下是您的 DetailViewController 的外观:
类 DetailTableViewController: UITableViewController {

var tblSearchController:UISearchController!

override func viewDidLoad() {
    super.viewDidLoad()

    self.tblSearchController = UISearchController(searchResultsController: nil)
    self.tableView.tableHeaderView=self.tblSearchController.searchBar
    definesPresentationContext = true

}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let aCell:UITableViewCell! =  tableView.dequeueReusableCellWithIdentifier("Cell")
    return aCell
}

}

【讨论】:

  • definesPresentationContext 是问题所在,如果它设置为 true,它将覆盖当前控制器,如果当前视图控制器或其后代呈现视图控制器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-04
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多