<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                @借用一組圖,來展示下UISearchDisplayController :?比如:搜索"萬通",彈出一個tableView ? ? 顯示出檢索有這2個字的地點 ![](https://box.kancloud.cn/2016-01-12_5694d75245ffd.jpg) @UISearchDisplayController(搜索顯示控制器)詳解: 1.繼承于NSObject,它并不是一個視圖控制器,只是一個類,一個工具類 2.提供一個searchBar和一個搜索結果tableView 3.searchBar需要我們自己創建,添加到指點視圖,提供給UISearchDisplayController 4.搜索結果tableView由搜索控制器進行搜索后要顯示結果的時候創建,我們要制定一個 ? ? ? ?UIViewController負責顯示,并實現它的代理,指定delegate,dataSource(也就是,它會有2 ? ?個tableView,一個是需要顯示結果的時候才建立-----對應上圖第三個,一個是初始化的時 ? ?候就已經存在-----對應上圖第一個,但都是由同一個UIViewController控制) 5.設置自身代理UISearchDisplayDelegate ?@代碼舉例:(初始化) ~~~ // 1.創建一個UISearchBar,添加在tableView上面 UISearchBar * searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,0, 320, 80)]; searchBar.placeholder = @"國家名"; self.tableView.tableHeaderView = searchBar; // 2.用創立的searchBar和UIViewController的view初始化出UISearchDisplayController _searchDC = [[UISearchDisplayController alloc]initWithSearchBar:searchBar contentsController:self]; // 3.設置代理 _searchDC.searchResultsDelegate = self; _searchDC.searchResultsDataSource = self; _searchDC.delegate = self; ~~~ ?@代碼舉例:(如何區分2個tableView) ~~~ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // searchResultsTableView屬性,will return non-nil. create if requested if([tableView isEqual:self.searchDC.searchResultsTableView]){ return 1; }; // tableView == self.tableView return 1; } ~~~ ?@至于如何檢索出想要的結果(圖示3),執行下面的代理方法后,用數組self.searchResults跟往常基本的UITableView賦值步驟一樣,只是多了區分哪個tableView ~~~ 現在來實現當搜索文本改變時的回調函數。這個方法使用謂詞進行比較,并講匹配結果賦給searchResults數組: - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope { NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@",searchText]; self.searchResults = [self.allItems filteredArrayUsingPredicate:resultPredicate]; } //接下來是UISearchDisplayController的委托方法,負責響應搜索事件: #pragma mark - UISearchDisplayController delegate methods -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { [self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]]; return YES; } - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption { [self filterContentForSearchText:[self.searchDisplayController.searchBar text] scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:searchOption]]; return YES; } ~~~ @這是網上總結出的3點不足,鏈接http://blog.sina.com.cn/s/blog_759d3e1201017zsi.html ~~~ 3.不足之處 UISearchDisplayController從我使用過程中,感覺到有三點不足。 (1)使用UISearchDisplayController當鍵盤彈出來的時候,會默認把navagationBar給隱藏起來。如果不需要隱藏navagationBar,最好的處理方式就是重寫UISearchDisplayController的-(void)setActive:(BOOL)visible animated:(BOOL)animated方法: 自定義一個類CustomSearchDisplayController,繼承自UISearchDisplayController,然后在.m文件中重寫該方法,并在該方法中主動顯示navagationBar。 @implementation CustomDisplaySearchViewController - (void)setActive:(BOOL)visible animated:(BOOL)animated { [super setActive:visible animated:animated]; [self.searchContentsController.navigationController setNavigationBarHidden:NOanimated:NO]; } @end (2)UISearchDisplayController的tableView有一個標簽,當沒有匹配的結果時,默認會在tableView上顯示一個“No Result”的標簽。如果說想自定義這個標簽,可以通過循環遍歷出tableView上標簽。 - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { for (UIView* v in self.customDisplaySearch.searchResultsTableView.subviews) { if ([v isKindOfClass: [UILabel class]] && [[(UILabel*)v text] isEqualToString:@"No Results"]) { UILabel *label = (UILabel *)v; label.text = @"沒有結果"; break; } } return YES; } (3)UISearchDisplayController的UISearchBar輸入框當無輸入時,SearchResultsTableView無法根據個人需求讓表展示出來。我嘗試過通過點擊搜索欄delegate方法中去處理表展示問題,可是嘗試失敗了。 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看