2015-09-03 104 views
3

我正在使用UISearchControllerUITableView。當選中UITableView中的某個單元格時,我在整個屏幕上方添加了一個黑色的UIView,並帶有一些子視圖。當UISearchController處於非活動狀態時,它工作得很好。但是當它活躍時,UISearchBar顯示在我的黑色視圖上方。如何以編程方式關閉UISearchBar?

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
self.searchController.searchResultsUpdater = self; 
self.searchController.dimsBackgroundDuringPresentation = NO; 
self.searchController.searchBar.scopeButtonTitles = [NSArray array]; 
self.searchController.searchBar.delegate = self; 
self.searchController.hidesNavigationBarDuringPresentation = NO; 
self.searchController.searchBar.backgroundImage = [self imageWithColor:[MySingleton shared].barTintColor]; 
[self.searchController.searchBar sizeToFit]; 
[self.view addSubview:self.searchController.searchBar]; 

myView = [[UIView alloc] initWithFrame:CGRectMake(0, -64, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)]; 
    myView.backgroundColor = [UIColor blackColor]; 
    myView.layer.opacity = 0.9; 
[self.view addSubview:myView]; 

我試着放置視圖之前使之失去活性,

self.searchController.active = NO; 

,並添加MyView的一個導航控制器的視圖

[self.navigationController.view addSubview:myView]; 

還是沒有運氣。任何想法?

+0

通過解僱你的意思是消除它或從它的控制權?或使其無效 –

+0

使其處於非活動狀態或從中取消控制 - 只是爲了使其不顯示在黑色視圖之上。我無法刪除它,我需要在其位置上的搜索欄。 –

+0

如果你設置了會發生什麼:'self.searchController.searchBar.hidden = YES;'? – dudeman

回答

0

試試這個

[self.searchController setActive:NO]; 

這是SearchController的屬性按Apple文檔,應該做的伎倆

+0

對不起,但我使用UISearchController,而不是棄用的UISearchDisplayController,並且該方法不適用於它。 –

+0

檢查編輯和評論plz –

+0

它應該是正確的答案,但不知何故它的工作原理錯誤:搜索欄的文本被清除,但搜索欄保持在黑色視圖之上。 –

0

有將允許你插入上面在另外一個視圖中的視圖的方法層次結構稱爲:- insertSubview:aboveSubview:。以下是如何使用它:

if (self.searchController.searchBar) 
    [self.view insertSubview:myView aboveSubview:self.searchController.searchBar]; 
else 
    [self.view addSubview:myView]; 
+0

仍然沒有運氣,對不起。我嘗試了這一點,如果(self.searchController.active),但搜索欄仍然在視圖上方。 –