中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UISearchBar和UISearchDisplayController

發布時間:2020-06-18 06:11:46 來源:網絡 閱讀:2133 作者:Im劉亞芳 欄目:移動開發

一:添加searchBar的兩種方式:

////////////添加搜索欄方式一:直接畫一個,畫不好的話會覆蓋別的東西/////


     self.tableView.backgroundView = [[UIView alloc] init];

    [self.tableView setBackgroundColor:[UIColor clearColor]];

    UISearchBar *mySearchBar = [[UISearchBar alloc]

                                initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width, 45)];

    mySearchBar.delegate = self;

    mySearchBar.showsCancelButton = NO;

    mySearchBar.barStyle=UIBarStyleDefault;

    mySearchBar.placeholder=@"Enter Name or Categary";

    mySearchBar.keyboardType=UIKeyboardTypeNamePhonePad;

    [self.view addSubview:mySearchBar];

    [mySearchBar release];


    

/////////////添加搜索欄方式二:添加置tableView////////////////

    

    UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0.0, 0.0, self.view.bounds.size.width,40)];

    searchBar.placeholder=@"Enter Name";//默認搜索框文本內容;

    searchBar.barStyle = UIBarStyleBlackTranslucent;//設置bar的風格

    searchBar.delegate = self;

    self.tableView.tableHeaderView = searchBar;//searchBar添加到tableView上;且searchBar添加到tableView的頭,注意滾動出屏幕后,搜索框也不在了,只出現在首頁

    searchBar.autocorrectionType = UITextAutocorrectionTypeNo;//是否自動對輸入文本對象進行風格校正

    searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;//設置什么時候用大寫

    

    searchBar.backgroundColor = [UIColor redColor];//設置bar的背景顏色;

    searchBar.backgroundImage = [UIImagep_w_picpathNamed:@"item.png"];//修改背景圖片

    searchBar.showsSearchResultsButton =YES;//是否在控件的右端顯示搜索結果按鈕

    searchBar.showsCancelButton = YES;

    searchBar.showsScopeBar = YES;//控制搜索欄下部的選擇欄是否顯示出來

    searchBar.prompt = @"ewq";//顯示在控件頂部的一行提示文字

    searchBar.translucent = YES;//指定控件是否會有透視效果

二、searchBar的結構了解:

 

iPhone開發UISearchBar學習是本文要學習的內容,主要介紹了UISearchBar的使用,不多說,我們先來看詳細內容。關于UISearchBar的一些問題。

1、修改UISearchBar的背景顏色

 

UISearchBar是由兩個subView組成的,一個是UISearchBarBackGround,另一個是UITextField. 要IB中沒有直接操作背景的屬性。方法是直接將 UISearchBarBackGround移去  (主要是了解這段話,其實換背景圖片和背景顏色可以直接換。了解后可用于換searchBar的樣式)

 

    for (UIView *subview in searchBar.subviews)

    {

        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")])

        {

            [subview removeFromSuperview];

            break;  

        }   

    }

    

第二種解決的方法:

[[searchBar.subviews objectAtIndex:0]removeFromSuperview];

換cancel的樣式:

 

for(id cc in [searchBar subviews])

    {

        if([cc isKindOfClass:[UIButton class]])

        {

            UIButton *btn = (UIButton *)cc;

            [btn setTitle:@"取消"  forState:UIControlStateNormal];

        }

        

    }

三、serarBar的屬性及代理:

 

 

屬性:作用
UIBarStyle barStyle
控件的樣式
id delegate
設置控件的委托
NSString *text
控件上面的顯示的文字
NSString *prompt
顯示在頂部的單行文字,通常作為一個提示行
NSString *placeholder
半透明的提示文字,輸入搜索內容消失
BOOL showsBookmarkButton
是否在控件的右端顯示一個書的按鈕(沒有文字的時候)
BOOL showsCancelButton
是否顯示cancel按鈕
BOOL showsSearchResultsButton
是否在控件的右端顯示搜索結果按鈕(沒有文字的時候)
BOOL searchResultsButtonSelected
搜索結果按鈕是否被選中
UIColor *tintColor
bar的顏色(具有漸變效果)
BOOL translucent
指定控件是否會有透視效果
UITextAutocapitalizationType
autocapitalizationType
設置在什么的情況下自動大寫
UITextAutocorrectionType
autocorrectionType
對于文本對象自動校正風格
UIKeyboardType
keyboardType
鍵盤的樣式
NSArray *scopeButtonTitles
搜索欄下部的選擇欄,數組里面的內容是按鈕的標題
NSInteger selectedScopeButtonIndex
搜索欄下部的選擇欄按鈕的個數
BOOL showsScopeBar
控制搜索欄下部的選擇欄是否顯示出來

代理列表: 

 

編輯代理

 

  • – searchBar:textDidChange:

  • – searchBar:shouldChangeTextInRange:replacementText:

  • – searchBarShouldBeginEditing:

  • – searchBarTextDidBeginEditing:

  • – searchBarShouldEndEditing:

  • – searchBarTextDidEndEditing:

點擊按鈕

  • – searchBarBookmarkButtonClicked:

  • – searchBarCancelButtonClicked:

  • – searchBarSearchButtonClicked:

  • – searchBarResultsListButtonClicked:

范圍代理

  • – searchBar:selectedScopeButtonIndexDidChange:

  • 利用UISearchBar的委托事件 textDidChange, 當在搜索框中輸入完成后,如果輸入的文本長度>0,可以調用自己的搜索方法,得到搜索結果,然后再reloadData,刷新一下。如果輸入文本長 度<0,則需要恢復到原始數據。這個方法可以在邊輸入搜索文本邊顯示結果。 如果需要按“search”按鈕再搜索,則將上述操作放在searchBarSearchButtonClicked中。


  • searchBar的范圍控件showsScopeBar,官方學名叫Scope Buttons。
    首先就要設置這個屬性:
    self.searchBar.showsScopeBar = YES;
    然后要給他添加按鈕。比如說,這樣:self.searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"BOY",@"GIRL",@"ALL",nil];
    還有一個很重要的事情就是我們要實現這個代理UISearchBarDelegate里的這個方法searchBar:selectedScopeButtonIndexDidChange:。告訴表格,你選擇的范圍是啥。
    還有要是設置默認選擇哪個按鈕的話,要設置這個屬性,像這樣就是默認選中第1個啦。
    self.searchBar.selectedScopeButtonIndex = 0;

四、UISearchDisplayController使用:

利用UISearchDisplayController可以簡化很多操作,也能達到搜索的目的。

 

屬性:

active————是搜索界面可視化,默認為no,可用setActive方法設置.

delegate————委托

searchBar————在searchdisplaycontroller初始化后,searchbar是不可修改的,是readonly屬性的.

searchContentController————管理搜索內容的試圖控制器,一般是一個UITableViewController的實例,意思是針對一個UITableView的內容進行搜索

searchResultsDataSource————搜索結果的數據源

searchResultsDelegate————搜索結果的委托

searchResultsTableView————搜索結果要展示在哪個tableview中(read-only);

searchResultsTitle————搜索結果視圖的title

 

初始化一個searchDisplayController:

在正常初始化完一個searchBar后再加上如下代碼:     

      UISearchDisplayController * searchdispalyCtrl = [[UISearchDisplayController  alloc] initWithSearchBar:theSearchBar contentsController:self];

        searchdispalyCtrl.active = NO;

        searchdispalyCtrl.delegate = self;

        searchdispalyCtrl.searchResultsDelegate=self;

        searchdispalyCtrl.searchResultsDataSource = self;

 

使用UISearchDisplayDelegate的委托方法進行搜索操作:

1.搜索狀態改變:

  • – searchDisplayControllerWillBeginSearch:

  • – searchDisplayControllerDidBeginSearch:

  • – searchDisplayControllerWillEndSearch:

  • – searchDisplayControllerDidEndSearch:

2.裝載和卸載tableview:

  • – searchDisplayController:didLoadSearchResultsTableView:

  • – searchDisplayController:willUnloadSearchResultsTableView:

3.顯示和隱藏tableview:

  • – searchDisplayController:willShowSearchResultsTableView:

  • – searchDisplayController:didShowSearchResultsTableView:

  • – searchDisplayController:willHideSearchResultsTableView:

  • – searchDisplayController:didHideSearchResultsTableView:

4.搜索條件改變時響應:

  • – searchDisplayController:shouldReloadTableForSearchString:  

  • – searchDisplayController:shouldReloadTableForSearchScope:

 

searchDisplayController 自身有一個searchResultsTableView,所以在執行操作的時候首先要判斷是否是搜索結果的tableView,如果是顯示的就是搜索結 果的數據,如果不是,是TableView自身的view,則需要顯示原始數據。

  if(tableView == self.searchDisplayController.searchResultsTableView)

    {

        arr = [self.filterContent valueForKey:key]; //搜索結果

    }

    else 

    {

        arr = [self.localresource valueForKey:key];  //原始數據

    }

 

這樣就不需要每次都realoadData了。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铁岭县| 柯坪县| 大足县| 无为县| 广德县| 惠州市| 苗栗县| 阿巴嘎旗| 双峰县| 许昌市| 崇左市| 宁安市| 定安县| 镇雄县| 北安市| 双鸭山市| 淮安市| 阳西县| 府谷县| 彝良县| 阜城县| 高雄县| 大化| 瑞丽市| 澄江县| 临泉县| 罗城| 平利县| 绍兴县| 岳阳市| 宁晋县| 三原县| 淮滨县| 金平| 永兴县| 蚌埠市| 仁怀市| 朝阳市| 浮梁县| 大英县| 棋牌|