【发布时间】:2014-02-09 15:59:37
【问题描述】:
我正在为UISearchDisplayController 苦苦挣扎,希望有人可以帮助我。
所以基本上我有一个UINavigationBar,里面有一个“搜索”按钮。当有人点击“搜索”时,UISearchDisplayController 应该被激活并且 UISearchBar 应该出现在UINavigationBar 中。在 SearchBar 旁边,我实现了一个“取消”按钮,它可以停用 SearchDisplayController 并将 UINavigationBar 重置为使用“搜索”按钮的标准。
我的第一个问题是SearchBar 与结果表之间的差距或SearchDisplayController 处于活动状态时的灰色叠加层。
第二个问题是我无法在点击取消后将我的 rightBarButtonItem 重置为默认图标(放大镜)。即使我尝试设置 [self.navigationItem setRightBarButtonItem:nil]; 也没有发生任何事情,它只是保留在“取消”按钮上。
这是我的实现:(UI 元素是通过我的故事板添加的)
- (IBAction)btnSearchClicked:(id)sender {
[self.navigationController.navigationBar addSubview:self.searchController.searchBar];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelEditing)];
[self.searchController.searchBar setFrame:CGRectMake(0, 0, 250, 44)];
[self.searchController setDisplaysSearchBarInNavigationBar:YES];
[self.searchController setActive:YES animated:YES];
[self.searchController.searchBar becomeFirstResponder];
}
-(void)cancelEditing
{
[self.navigationItem setRightBarButtonItem:nil];
[self.searchController setActive:NO animated:YES];
[self.searchController.searchBar removeFromSuperview];
}
【问题讨论】:
标签: ios objective-c ios7 uisearchbar uisearchdisplaycontroller