将UISearchBar结果显示为UIPopoverPresentationController iOS 9

时间:2015-09-22 14:19:28

标签: ios swift popover ios9

我有一个带有UISearchBar的ParentViewController和一个带有tableView的ChildTableViewController,其中将显示搜索结果。当我点击searchBar时,弹出窗口应该显示符合searchBar上写入的过滤器的所有结果。这意味着,在开始时,所有结果都应该显示在popoverController中。

问题是结果显示占据整个屏幕,而不是呈现在弹出窗口中。下面是与ParentViewController对应的代码,其中应该显示弹出框。

func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
    let childController = ChildTableViewController()
    childController.modalPresentationStyle = .Popover
    childController.preferredContentSize = CGSize(width: 50, height: 100)
    let popover = childController.popoverPresentationController
    popover?.permittedArrowDirections = .Any
    popover?.delegate = self
    popover?.sourceView = self.view
    popover?.sourceRect = CGRect(x: 200, y: 200, width: 1, height: 1)
    presentViewController(childController, animated: true,completion: nil)

}

enter image description here

我正在使用Xcode 7和iOS 9。

1 个答案:

答案 0 :(得分:0)

您需要做的是实现以下方法,该方法是UIPopoverPresentationControllerDelegate协议的一部分:

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
    return UIModalPresentationNone; // This will force a popover display
}