• iOS UISearchDisplayController学习笔记


    UISearchDisplayController和UISearchBar一起使用用来管理UISearchBar和搜索结果的展示。UISearchDisplayController提供了显示搜索结果的tableview来覆盖原控制器的视图;

    使用UISearchDisplayController须要:

    • 提供搜索结果table的数据的来源-searchResultsDataSource
    • 搜索结果table的代理 SearchResultsDelegate
    • UISearchDisplayController控制器的代理delegate ,对应搜索事件的開始结束和显示隐藏界面;(这个代理知道搜索字符串的改变和搜索范围,所以结果table可以(自己主动)又一次导入)
    • searchBar的代理(关于UISearchBar代理上篇文章已经说明)

    一般是在在uitableview中初始化UISearchDisplayController来展示一个列表。

    searchController = [[UISearchDisplayController alloc]
                             initWithSearchBar:searchBar contentsController:self];
    searchController.delegate = self;
    searchController.searchResultsDataSource = self;
    searchController.searchResultsDelegate = self;

    在tabelview代理方法中须要推断是哪一个table(UITableViewController中有self.tableView  UISearchDisplayController中有.searchResultsTableView)

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
     
        if (tableView == self.tableView) {
            return ...;
        }
        // If necessary (if self is the data source for other table views),
        // check whether tableView is searchController.searchResultsTableView.
        return ...;
    }
    一个UIViewController和一个UISearchBar仅仅有一个UISearchDisplayController。


    你可以在ios7 之后,在navigationbar中使用SearchDisplayController,通过配置UISearchDisplayController中得displaysSearchBarInNavigationBar和 navigationItem属性;


    相关的属性和方法

    @property(nonatomic, getter=isActive) BOOL active

    展现(是否隐藏)状态。默认值是NO。直接设置没有动画,用setActive:animated: 设置会有动画

    @property(nonatomic, assign) id<UISearchDisplayDelegate> delegate

    代理

    @property(nonatomic, assign) BOOL displaysSearchBarInNavigationBar

    指定navigationbar中包括一个searchBar

    @property(nonatomic, readonly) UINavigationItem *navigationItem

    仅仅读属性 代表在navigation controller的navigationbar中的searchdisplaycontroller;

    @property(nonatomic, readonly) UISearchBar *searchBar

    UISearchDisplayController中的UISearchBar;

    @property(nonatomic, readonly) UIViewController *searchContentsController

    这个属性管理着搜索出的内容

    @property(nonatomic, assign) id<UITableViewDataSource> searchResultsDataSource

    展示搜索结果的数据来源

    @property(nonatomic, assign) id<UITableViewDelegate> searchResultsDelegate

    搜索结果展示的table的代理

    @property(nonatomic, readonly) UITableView *searchResultsTableView

    搜索结果展示的table

    @property(nonatomic, copy) NSString *searchResultsTitle

    搜索结果视图的标题

    - (id)initWithSearchBar:(UISearchBar *)searchBar contentsController:(UIViewController *)viewController

    初始化控制器 指定关联的search 和view controller

    - (void)setActive:(BOOL)visible animated:(BOOL)animated

    展现或者隐藏搜索视图

    内容来自苹果文档


  • 相关阅读:
    java NIO ;mvn
    查询mysql当前连接数
    lifecycle of opensource products--x86-64
    docker squid---but git proxy should specify by git config --global http.proxy http:...
    java jmx
    zabbix basic concept
    智能手机,医疗诊断,云会议(gotomeeting/citrix)
    子网划分
    Cloudstack4.2之改变数据卷容量的大小(Resize Data Volumes)
    OCFS2 Fencing
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5069534.html
Copyright © 2020-2023  润新知