0

iOS 앱에서 오른쪽 검색 버튼을 내 UINavigationController에두고 싶습니다. 사용자가 버튼을 터치하면 위 내 UITableView이 표시됩니다. 사용자가 UISearchDisplayController 취소 버튼을 클릭 할 때 다시 다음보기로드, 그리고 숨겨진 때사용자가 UIBarButtonItem을 터치했을 때 tableView를 통해 UISearchBar 표시

은 내가 UISearchBar 숨겨진 싶습니다.

나는 어디에서나 검색을 했으므로 예제를 찾을 수 없습니다. 도움?

답변

1

멋진 샘플 프로젝트 here이 있습니다. 핵심 포인트는

이 1.Hide 검색 바보기 전에 다음

-(void)viewWillAppear:(BOOL)animated { 
    [self hideSearchBar];   
} 

-(void)hideSearchBar { 
    CGRect newBounds = self.tableView.bounds; 
    newBounds.origin.y = newBounds.origin.y + self.searchBar.bounds.size.height; 
    self.tableView.bounds = newBounds; 
} 

2.On 검색 버튼 액션 대상을, 검색 창을 표시

// make the search bar visible 
// code example from https://github.com/versluis/Table-Seach-2013 to deal with iOS 7 behavior 

-(IBAction)displaySearchBar:(id)sender { 

    [self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES]; 

    NSTimeInterval delay; 
    if (self.tableView.contentOffset.y >1000) delay = 0.4; 
    else delay = 0.1; 
    [self performSelector:@selector(activateSearch) withObject:nil afterDelay:delay]; 

} 

- (void)activateSearch 
{ 
    [self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO]; 
    [self.searchBar becomeFirstResponder]; 

} 

3 . 마지막으로 취소를 클릭하면 검색 창을 숨 깁니다.

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 
    [self hideSearchBar]; 
} 
+0

이 솔루션은 사용자가 Cance를 눌렀을 때 "원활하게"작동하지 않습니다. l 그들은 테이블의 중앙에 놓이고 취소를 다시 숨긴 후에 검색 막대가 보입니다. – adamdehaven

+0

TableView의 위치 지정에 도움이되는 viewWillAppear로 hideSearchBar를 이동했습니다. 내 빌드에서는 최상위 위치로 돌아갑니다. 또한 취소를 다시 숨긴 후 SearchBar가 표시된 상태로 문제를 재현 할 수 없습니다. iOS 7에서 테스트하기. –

+0

'displaySearchBar'에서 타이머의 목적은 무엇입니까? – adamdehaven