国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOSUI控件8(UISearchBar)

2019-11-14 19:04:06
字體:
來源:轉載
供稿:網友

1. 搜索條(UISearchBar)

搜索條(UISearchBar)由一個文本框和幾個按鈕組成,當用戶在文本框輸入部分內容,程序即可按指定的規則進行搜索。

UISearchBar特有的屬性:

  1. Options
    Shows Search Results Button
    Shows Bookmarks Button
    Shows Cancel Button
  2. Shows scope 與Scope Titles

UISearchBar控件的不同部分會觸發不同的事件,UISearchBar的委托對象需要實現UISearchBarDelegate協議:

  • -searchBar:textDidChange:
  • -searchBarBookmarkButtonClicked:
  • -searchBarCancelButtonClicked:
  • -searchBarSearchButtonClicked:
  • -searchBarResultsListButtonClicked:
  • -searchBar:selectedScopeButtonIndexDidChange:
示例:使用搜索條過濾、檢索TableView
@implementation SearchBarViewControllerNSArray* sTableData;NSArray* searchData;bool isSearch;-(void) viewDidLoad{    [super viewDidLoad];    isSearch = NO;    sTableData = [NSArray arrayWithObjects:@"無間道",@"賭神",@"縱橫四海",@"重慶森林",@"雷神",@"鋼鐵俠",@"美國隊長",@"復仇者聯盟", nil];    self.searchTable.delegate = self;    self.searchTable.dataSource = self;    self.searchBar.delegate = self;    self.searchTable.tableHeaderView = self.searchBar;}-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    if (isSearch) {        return searchData.count;    }    else{        return sTableData.count;    }}-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static NSString* cellId = @"cellId";    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellId];    if (!cell) {        cell = [[UITableViewCell alloc]                initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];    }    NSInteger rowNo = indexPath.row;    if (isSearch) {        cell.textLabel.text = [searchData objectAtIndex:rowNo];    }    else{        cell.textLabel.text = [sTableData objectAtIndex:rowNo];    }    return cell;}//點擊取消按鈕-(void) searchBarCancelButtonClicked:(UISearchBar *)searchBar{    isSearch = NO;    [self.searchTable reloadData];}//當搜索框的文本改變時觸發-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{    [self filterBySubstring:searchText];}-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{    [self filterBySubstring:searchBar.text];    [searchBar resignFirstResponder];}-(void) filterBySubstring:(NSString*)substr{    isSearch = YES;    NSPRedicate* pred = [NSPredicate predicateWithFormat:@"SELF CONTAINS[c] %@",substr];    searchData = [sTableData filteredArrayUsingPredicate:pred];    [self.searchTable reloadData];}@end

1.2 使用UISearchDisplayController

使用UISearchDisplayController,可以直接在搜索條下方顯示搜索列表。

Search Bar and Search Display Controller拖入界面,除了應用界面上顯示的UISearchBar控件,在Dock面板上還有Search Display Controller控件,默認看不到。選在Search Display Controller控件,在連接檢查器面板可以看到控件的關聯信息。


UISearchDisplayController的Outlet屬性:

  • delegate: 屬性值實現UISearchDisplayDelegate協議的對象
  • searchBar: 綁定到界面的UiSearBar控件
  • searchContentsController:綁定該控件的控制器控件
  • searchResultDataSource:該屬性代表查詢結果的UITableView的dataSource屬性
  • searchResultDelegate:該屬性代表顯示查詢結果的UITableView的delegate屬性

這些屬性默認都綁定到當前控制器,因此控制器類接口定義部分實現如下:

@interface SearchDisplayViewController : UIViewController<UITableViewDataSource, UITableViewDelegate,UISearchBarDelegate, UISearchDisplayDelegate>@end

控制器的實現代碼和SearBar的實現類似,效果如下:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宿松县| 上饶县| 常山县| 黄陵县| 勃利县| 贵港市| 塔河县| 临沭县| 金堂县| 樟树市| 永春县| 广水市| 彝良县| 上虞市| 曲麻莱县| 藁城市| 收藏| 大邑县| 门源| 汤原县| 红原县| 开江县| 临武县| 正定县| 满洲里市| 铅山县| 泰宁县| 宁海县| 彭泽县| 瑞安市| 乌兰浩特市| 浪卡子县| 天长市| 太湖县| 鲁山县| 交口县| 永丰县| 北碚区| 理塘县| 麻城市| 金阳县|