我想直接在我的导航栏中添加搜索(例如Apple Maps)。
所以这没有问题,生病只是创建为搜索栏:
searchBar.placeholder = "Gebäude und Räume suchen"
var rightNavBarButton = UIBarButtonItem(customView: searchBar)
self.navigationItem.rightBarButtonItem = rightNavBarButton
但是我应该如何解决结果呢?第一次尝试使用自适应弹出窗口,并且如果用户输入至少2个字母,则加载弹出框并显示结果(因此我能够在iPad上显示弹出框,并在iPhone上获得全屏视图) - 但如果弹出窗口仍然可见,我需要检查每个按键,如果有自适应弹出窗口,我还需要在子控制器上创建搜索栏。
所以我不确定如何解决Apple Maps(iPhone和iPad版)等问题 - 任何人都可以给我一些tipps我该怎么做?那是一个波普吗?自定义视图?
非常感谢任何帮助。
编辑:
最简单的方法(这就是它的atm外观) - 我有一个带有搜索图标的按钮,如果用户点击了这个搜索按钮,则会加载一个"搜索"控制器(带有一个搜索栏) - 如果用户点击一个结果,那就去"返回"并在地图上显示结果。
但我更喜欢像苹果地图应用程序(iPad和iPhone版本之间的区别)
答案 0 :(得分:3)
你需要检查一次。我认为这个答案会对你有所帮助。
请先查看以上链接。你会得到你的答案。它是客观的-c但您可以从中获取参考。
String filePath = "/content/dam/sbi/personal/docs/Sbi FB Deals Done.pdf";
InputStream fileStream = null;
try {
Asset asset = resolver.resolve(filePath).adaptTo(Asset.class);
fileStream = asset.getOriginal().getStream();
//do whatever you need to do with the stream
} catch (IOException e) {
} finally {
IOUtils.closeQuietly(fileStream);
}
答案 1 :(得分:1)
我明白为什么这会令人困惑。您要查找的功能过去由UISearchDisplayController
和UISearchDisplayDelegate
提供。但是这些方法在iOS 8中已弃用。
这些天的方法是使用UISearchController
。文档很好地解释了它:
使用
initWithSearchResultsController
:方法创建新的搜索控制器,传入管理要显示的内容的视图控制器。searchResultsUpdater
属性包含负责更新结果的对象。通常,searchResultsUpdater
属性中包含的对象与初始化期间设置的视图控制器相同。但是,如果您已创建自己的模型对象以过滤和回复查询,则可以将其设置为searchResultsUpdater
。
UISearchControllerDelegate
提供了用于呈现和解除搜索结果的回调机制。
答案 2 :(得分:1)
iPad中的苹果使用的是UIPopover,我之前使用以下代表为自定义地图应用做了完全相同的事情:
-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
//init a searchPopover with the view you want to show the results in and then call it
[self.searchPopover presentPopoverFromRect:[self.search bounds] inView:self.search permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)aSearchBar
{
[self.searchPopover dismissPopoverAnimated:YES];;
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
//update the tableview that is in the searchPopover
//searchView is the view inside the popOver, filterResults is a custom method with an NSPredicate inside.
[self.searchView filterResultsUsingString:searchText];
}
在将显示结果的视图控制器中,您实现委派,以便当用户在该视图中按下所需的按钮或行时,将显示父视图并解除弹出窗口,您可以放大所需的注释。
-(void)didSelectResult:(id)annotation
{
//so when you select the result, and call this delegate method:
self.annotationToSelect = annotation;
[self.searchBar resignFirstResponder];
self.search.text = @"";
[self.searchPopover dismissPopoverAnimated:YES];
}