2014-10-29 1 views
1

내 UISearchBar를 UINavigationBar 아래에 직접 배치하려고 시도하고 있지만 전혀 나타나지 않는 문제가 있습니다. iOS8의 새로운 searchController를 사용하고 있습니다.프로그래밍 방식으로 UISearchController를 사용하여 UISearchBar 위치 지정

self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController]; 
self.searchController.searchResultsUpdater = self; 
self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0); 
self.salesTableView.tableHeaderView = self.searchController.searchBar; 

은 현재 내가 제대로 내 jQuery과 헤더에 추가하는 것을 사용하고 있지만,의 문제는 내가 원하는 것이 아니다 테이블에 스크롤이다. 대신 내 막대기 테이블 위의 그것을 막대기 및이 시도했지만이 지금은 사라질 것으로 보인다 않는 한 내가 오른쪽 값을 사용하지 않는 한?

self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController]; 
self.searchController.searchResultsUpdater = self; 
self.searchController.searchBar.frame = CGRectMake(0, 0, self.searchController.searchBar.frame.size.width, 44.0); 
// self.salesTableView.tableHeaderView = self.searchController.searchBar; 

답변

5

원점은 (0,0)이기 때문에 상태 표시 줄과 탐색 모음에 의해 숨겨집니다. 다음으로 변경하면 검색 창이 표시됩니다.

self.searchController.searchBar.frame = CGRectMake(0, 64, self.searchController.searchBar.frame.size.width, 44.0); 

두 가지 해결책이 있습니다. 쉬운 방법을 보여줄 것입니다 (스토리 보드를 사용할 수도 있습니다). searchBarView이라는 ViewController에 UIView를 만듭니다. 을 searchBarView에 추가하십시오. ViewController에 searchBarView을 추가하십시오.

UIView *searchBarView = CGRectMake(0, 64, self.searchController.searchBar.frame.size.width, 44); 
[searchBarView addSubView:self.searchController.searchBar]; 
[self.view addSubView:searchBarView]; 

검색 컨트롤러 self.searchController.searchBar.sizeToFit()을 viewDidload에 설정했다고 가정합니다. 그것은 보편적 인 응용 프로그램입니다 경우 (모든 작업을 만들기 위해 내 경우에는 적어도)이 방법을 추가해야합니다

- (void)viewDidLayoutSubviews { 
    // you could check 
    // if (IS_IPAD || (IS_IPHONE_6PLUS && UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))) 
    [self.searchController.searchBar sizeToFit]; 
} 

이 유래 내 첫 번째 대답이다. 희망이 도움이 ^^. 체크 아웃

1

두 가지 :

  1. UIViewControllerfalseautomaticallyAdjustsScrollViewInsets을 설정하십시오. 그러면보기 컨트롤러의보기의 하위보기가 탐색 모음 아래로 이동해야합니다.

  2. 사용 searchFieldBackgroundPositionAdjustment (사용 가능한 아이폰 OS 5+)의 내부 검색 필드의 위치를 ​​조정하여 UISearchBar


사용법 :

let searchBar = UISearchBar() 
searchBar.searchFieldBackgroundPositionAdjustment = UIOffset(horizontal: 0, vertical: 10) 
관련 문제