2011-04-08 8 views

답변

2

이것은 매우 까다 롭습니다. _dimmingView는 searchDisplayController에 대해 private이며 모든 하위 뷰보다 우선합니다. 당신이 할 수있는 것은 사용자 정의보기로는 ([되는 searchString 길이] == 0 DidBeginSearch)

(tempView의 프레임이 테이블의 tableViewHeader에 배치 UISearchBar 설정되어)

- (void)viewDidLoad { 
    tempView = [[UIView alloc] initWith...]; 
    // tempView setup 
    ... 
} 

- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller { 
    [tempView setFrame:CGRectMake(0, self.searchDisplayController.searchBar.frame.size.height, 320, self.searchDisplayController.searchResultsTableView.frame.size.height)]; 
    [self.searchDisplayController.searchContentsController.view addSubview:tempView]; 
    ... 
} 

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 
{ 
    if ([searchString length] == 0) 
     [self.searchDisplayController.searchContentsController.view addSubview:tempView]; 
    else 
     [tempView removeFromSuperview]; 
    ... 
} 

- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller { 
    if (tempView && tempView.superview) 
     [tempView removeFromSuperview]; 
    ... 
} 

노트가 나타납니다 때마다 그것을 커버입니다 : DidBeginSearch에 새 인스턴스를 만들고 DidEndSearch에 릴리스하려고 시도했지만 첫 번째 호출에서만 작동했습니다! 이상한 ...

희망이 도움이

관련 문제