将 UISearchBar 结果呈现为 UIPopoverPresentationController iOS 9
Present UISearchBar results as UIPopoverPresentationController iOS 9
我有一个带有 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)
}
我正在使用 Xcode 7 和 iOS 9。
你需要做的是实现下面的方法,它是 UIPopoverPresentationControllerDelegate
协议的一部分:
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
return UIModalPresentationNone; // This will force a popover display
}
我有一个带有 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)
}
我正在使用 Xcode 7 和 iOS 9。
你需要做的是实现下面的方法,它是 UIPopoverPresentationControllerDelegate
协议的一部分:
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
return UIModalPresentationNone; // This will force a popover display
}