2013-10-25 2 views
0

그런 UI 기능을 구현할 방법이 있는지 궁금합니다. xcode 5에서 검색 막대와 searchDisplay 컨트롤을 드래그했을 때 알 수 있듯이 검색 막대와 searchDisplayController를 포함한 일련의 검색 컨트롤이 제공됩니다.button을 사용하여 searchDisplayController를 트리거하는 방법은 무엇입니까?

네이티브 검색 막대를 사용하는 대신 최신 페이스 북 앱에서와 같은 검색 표시 컨트롤을 트리거하는 버튼을 사용하고 싶습니다.

검색 창을 삭제하려고했습니다. 그러나 디스플레이 제어가 직접 실패했습니다. 나는 (내가 올바른 여부를 모르는)에있는 tableView 내부 검색 창

enter image description here

- (void)viewDidLoad 
{ 
    [self hideSearchBar]; 
} 

- (void)hideSearchBar 
{ 
    self.UISearchBar.hidden = YES; 
    self.UISearchBar.bounds = CGRectMake(0, 0, 0, 0); 
} 

- (IBAction)SearchClicked:(UIButton *)sender { 
    [self.searchDisplayController setActive:YES animated:NO]; 
    self.UISearchBar.hidden = NO; 
} 

- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller 
{ 
    [self hideSearchBar]; 
} 

를 삽입하려고 노력하지만 그것으로 문제는 다음과 같습니다

내가 취소하는 경우 검색은 스크롤 뷰가 이전 상태로 돌아 가지 않습니다. (숨겨진 검색 표시 줄이있는 간격 공간이 있음). 대신이 보는

는 :

enter image description here

내가 취소 버튼이 검색보기를 클릭하면이를보고 싶어요.

어떻게이 문제를 해결할 수 enter image description here ?

어떤 몸이라도 더 나은 해결책을 제공 할 수 있습니까?

감사

답변

0

그래서 마지막으로 searchBar 컨트롤을 스토리 보드로 드래그하는 대신. 나는 searchBarControl을 즉시 만들고 파괴하고있다.

-(void)initialiseSearch 
{ 
    //Start 
    searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 

    searchBar.delegate = self; 
    searchBar.showsCancelButton = YES; 
    searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self]; 

    searchDisplayController.delegate = self; 
    searchDisplayController.searchResultsDataSource = self; 
    searchDisplayController.searchResultsDelegate = self; 

    [self.view addSubview:searchBar]; 

    searchBar.hidden = YES; 
    [searchDisplayController setActive:NO animated:NO]; 

    // [self.searchDisplayController.searchResultsTableView registerNib:[UINib nibWithNibName:@"CustomSearch" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"search"]; 
    //End 
} 

메서드가로드 된보기에서 호출됩니다.

0

가있는 ScrollView의 원래의 중심에 CGPoint를 기반으로 만듭니다. viewDidLoad에()에서 : 사용자가 검색 창을 닫습니다

self.originalCenter = scrollView.center; 

그리고 때

- (void)hideSearchBar 
    scrollView.center = self.originalCenter; 

있는 ScrollView 당신이 당신의있는 UIScrollView라고 한 무엇이다.

+0

내가 예상 한대로 작동하지 않습니다. – TypingPanda

1

너무 간단합니다!

-(void) searchBarCancelButtonClicked:(UISearchBar *)searchBar{ 
     [self.searchDisplayController setActive:NO animated:YES]; 
     self.navigationController popToViewController:UIViewControllerA animated:YES; 
    }