UISearchController 在编辑时添加偏移量
Posted
技术标签:
【中文标题】UISearchController 在编辑时添加偏移量【英文标题】:UISearchController add's offset while editing 【发布时间】: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 的偏移量(主列表的宽度)。不知道怎么解决,卡住了。 【参考方案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,它将覆盖当前控制器,如果当前视图控制器或其后代呈现视图控制器。以上是关于UISearchController 在编辑时添加偏移量的主要内容,如果未能解决你的问题,请参考以下文章
UISearchController + UICollectionView 错误
UISearchController 搜索栏位置下降 64 点