亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

swift-教你如何實現導航上的UISearchController動畫效果。

2019-11-14 17:56:08
字體:
來源:轉載
供稿:網友

   這個代碼片段是我這周我從網上找了各種資料然后經過自己的修改終于弄好了導航的上下動畫效果:

step1:==>因為這個搜索要有動畫效果,所以這個頁面必須要有一個導航控制器:

//1.自定義創建導航控制器

這個頁面我是從其他頁面跳轉過來的,跳轉之前我自定義了一個導航控制器:

   let actionSearchTable=searchTable();

        let navVC = UINavigationController(rootViewController: actionSearchTable);

        navVC.navigationBar.barStyle = UIBarStyle.BlackTranslucent;

        self.PResentViewController(navVC, animated: true, completion: nil);

//2.點擊搜索跳轉到 searchTable.swift,這個頁面我繼承的是 UITableViewController,而不是UiViewController,一定要注意,不然每當點擊一次搜索取消的時候table上面會多出一片空白,這個原理我還不是太明白,如果你們發現了其中的原理希望能指點一二。

這個表格的數據源我引用的是一個txt文件。格式如下圖:

 

////  searchResultTable.swift//  搜索框////  Created by 盧洋 on 15/11/6.//  Copyright © 2015年 奈文摩爾. All rights reserved.//import UIKitclass searchTable: UITableViewController,UISearchBarDelegate{    lazy var dismissBtn: UIButton = { UIButton(frame: CGRectMake(0, 0, 24, 24)) }();//返回按鈕        var itemsString:[String]!    var searcher:UISearchController!    var searchBars:UISearchBar?        struct SearchControllerRestorableState {        var wasActive = false        var wasFirstResponder = false    }    var restoredState = SearchControllerRestorableState();        //初始化函數    override func viewDidLoad() {        super.viewDidLoad();        self.title="查找商家";        initView();            }        //初始化UI    func initView(){        dismissBtnPrepare();        //創建Table        self.tableView=UITableView(frame: CGRectMake(0, 80, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height));        self.tableView.delegate=self;        self.tableView.dataSource=self;        self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cells")                //1.讀取表格數據        let tablePath = NSBundle.mainBundle().pathForResource("states", ofType: "txt")!;        let tableData=try! NSString(contentsOfFile: tablePath, encoding: NSUTF8StringEncoding);        itemsString = tableData.componentsSeparatedByString("/n") as [String];                let src = searchResultTable(data: itemsString)        searcher = UISearchController(searchResultsController: src)                searcher.searchResultsUpdater = src;        //獲取焦點時有陰影效果        searcher.dimsBackgroundDuringPresentation=true;        //獲取焦點導航向上移的動畫效果        searcher.hidesNavigationBarDuringPresentation=true;        searchBars = searcher.searchBar        tableView.tableHeaderView = searchBars        searchBars?.delegate=self;        searchBars?.placeholder="輸入商家名稱";        //取消按鈕顏色和文本框光標顏色        searchBars?.tintColor=UIColor.blueWithTabbar();        //搜索框背景顏色        //searchBars?.barTintColor=UIColor.blackColor();        searcher.searchBar.sizeToFit();        self.tableView.reloadData();
     //背景充滿導航 definesPresentationContext
= true; } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) // Restore the searchController's active state. if restoredState.wasActive { searcher.active = restoredState.wasActive restoredState.wasActive = false if restoredState.wasFirstResponder { searcher.searchBar.becomeFirstResponder() restoredState.wasFirstResponder = false } } } override func viewDidDisappear(animated: Bool) { super.viewDidAppear(animated); //2.3將狀態欄變為白色 UIapplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent; } func searchBarSearchButtonClicked(searchBar: UISearchBar) { searchBar.resignFirstResponder() } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return itemsString.count } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cells", forIndexPath: indexPath) cell.textLabel!.text = itemsString[indexPath.row]; return cell } override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { //取消選中的樣式 tableView.deselectRowAtIndexPath(indexPath, animated: true); //獲取點擊的行索引 if(indexPath.row == 0){ } } /** 返回按鈕 */ func dismissBtnPrepare(){ dismissBtn.setImage(UIImage(named: "img.bundle/cancel"), forState: UIControlState.Normal) dismissBtn.addTarget(self, action: "dismissLogin", forControlEvents: UIControlEvents.TouchUpInside) self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: dismissBtn) } /** 釋放當前頁面 */ func dismissLogin(){ self.dismissViewControllerAnimated(true, completion: nil) } func searchBarCancelButtonClicked(searchBar: UISearchBar) { print("b"); //2.3將狀態欄變為白色 UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent; } //搜索框開始編輯事件 func searchBarTextDidBeginEditing(searchBar: UISearchBar) { //2.3將狀態欄變為白色 UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default; } func searchBarTextDidEndEditing(searchBar: UISearchBar) { //2.3將狀態欄變為白色 UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent; }}

//3.搜索結果頁面  searchResultTable.swift

////  searchResultTable2.swift//  searchBarDemo////  Created by 盧洋 on 15/11/6.//  Copyright © 2015年 奈文摩爾. All rights reserved.//import Foundationimport UIKitclass searchResultTable:UITableViewController,UISearchResultsUpdating{    var tableData:UITableView!;    var originalData:[String]!                  //原數據    var filteredData:[String]!                  //過濾數據        override func viewDidLoad() {        super.viewDidLoad();        self.title="輸入商家名稱";        initView()    }    init(data:[String]){        originalData = data        super.init(nibName: nil, bundle: nil)            }        required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }        //初始化UI    func initView(){        //創建Table        tableData=UITableView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height));        self.view.addSubview(tableData);        //tableData.backgroundColor=UIColor.redColor();        tableData.delegate=self;        tableData.dataSource=self;        tableData.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cells")            }         override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        // #warning Incomplete implementation, return the number of rows        return filteredData.count    }     override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {        let cell = tableView.dequeueReusableCellWithIdentifier("cells", forIndexPath: indexPath)                cell.textLabel!.text = originalData[indexPath.row];                return cell    }    func updateSearchResultsForSearchController(searchController: UISearchController) {        let searchBar=searchController.searchBar;        let target=searchBar.text;        filteredData = originalData.filter()            {                                s in                var options = NSStringCompareOptions.CaseInsensitiveSearch                if searchController.searchBar.selectedScopeButtonIndex == 0                {                    options = options.union(.AnchoredSearch)                }                let found = s.rangeOfString(target!, options: options)                                return (found != nil)        }        tableData.reloadData()            }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning();    }}

 

好最后效果圖如下:但是其中的字符串過濾有一點點問題,解決了一定要告訴我。。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久久电影| 欧美主播福利视频| 97视频免费在线看| 国产精品毛片a∨一区二区三区|国| 青青久久aⅴ北条麻妃| 亚洲成人精品视频| 国产精品久久久久久av福利软件| 亚洲日本欧美中文幕| 尤物九九久久国产精品的特点| 日本三级久久久| 欧美夫妻性生活xx| 久久久亚洲影院| x99av成人免费| 成人a视频在线观看| 日韩激情片免费| 在线看福利67194| 91成人天堂久久成人| 日韩欧美精品免费在线| 欧美成人在线免费视频| 日韩一中文字幕| 91免费视频网站| 狠狠干狠狠久久| 不卡av在线网站| 97视频在线免费观看| 成人网址在线观看| 日本精品久久中文字幕佐佐木| 久久视频精品在线| 国产精品久久久久久网站| 久久影院免费观看| 精品国产乱码久久久久久婷婷| 一区二区三区四区在线观看视频| 久久福利视频导航| 欧美做受高潮电影o| 日韩视频亚洲视频| 欧美一级淫片丝袜脚交| 成人网在线观看| 亚洲欧洲免费视频| 中文字幕国内精品| 欧美裸体xxxx极品少妇软件| 亚洲美女视频网站| 九九九热精品免费视频观看网站| 亚洲а∨天堂久久精品9966| 少妇高潮久久久久久潘金莲| 久久久久国产精品免费| 国产乱人伦真实精品视频| 亚洲图片欧美日产| 欧美又大粗又爽又黄大片视频| 日韩美女免费线视频| 国产黑人绿帽在线第一区| 欧美大胆在线视频| 国产一区二区日韩| 精品亚洲一区二区三区在线观看| 精品国产网站地址| 伦伦影院午夜日韩欧美限制| 精品久久久久久亚洲国产300| 91精品国产综合久久香蕉922| 国产婷婷97碰碰久久人人蜜臀| 永久555www成人免费| 2019中文字幕在线观看| 亚洲国产精品99| 欧美日韩黄色大片| 日韩在线一区二区三区免费视频| 这里只有精品在线播放| 欧美在线视频观看| 北条麻妃久久精品| 亚洲午夜未删减在线观看| 久久综合久久美利坚合众国| 亚洲精品久久久久久久久久久| 国产精品成人国产乱一区| 亚洲第一精品自拍| 免费不卡在线观看av| 欧美日韩亚洲激情| 欧美在线视频一区| 国产精品观看在线亚洲人成网| 久久精品视频在线播放| 国产精品电影网站| 日韩免费在线电影| 国产精品高清在线观看| 国产精品免费看久久久香蕉| 精品国产一区二区三区久久| 国产精品色午夜在线观看| 欧美一区二区大胆人体摄影专业网站| www国产精品视频| 91国产中文字幕| 久久成人一区二区| 久久躁狠狠躁夜夜爽| 日日噜噜噜夜夜爽亚洲精品| 91久久综合亚洲鲁鲁五月天| 久久夜色精品国产亚洲aⅴ| 九九热这里只有精品6| 国内久久久精品| 精品美女久久久久久免费| 久久99精品久久久久久青青91| 国产成+人+综合+亚洲欧洲| 亚洲精品中文字幕有码专区| 日韩女优人人人人射在线视频| 欧美日韩一区二区三区| 超薄丝袜一区二区| 亚洲欧美三级在线| 亚洲高清av在线| 欧美巨大黑人极品精男| 亚洲第一天堂无码专区| 久久免费少妇高潮久久精品99| 日韩精品视频中文在线观看| 国产精品成人aaaaa网站| 国产91免费看片| 日韩免费中文字幕| 国内精品久久久久影院 日本资源| 欧美一级视频免费在线观看| 日韩a**站在线观看| 欧美成人午夜影院| 91中文在线观看| 亚洲aⅴ日韩av电影在线观看| 午夜美女久久久久爽久久| 日韩中文有码在线视频| 成人a在线视频| 不卡av电影院| 亚洲白拍色综合图区| 欧美日韩国产精品| 青草青草久热精品视频在线网站| 黑人巨大精品欧美一区二区三区| 久久综合五月天| 欧美性受xxxx黑人猛交| 超碰精品一区二区三区乱码| 国模吧一区二区三区| 国产精品一区二区三区免费视频| 久久777国产线看观看精品| 欧美成人精品在线| 国产一区深夜福利| 国产精品视频1区| 欧美性生交xxxxxdddd| 91精品国产综合久久男男| 国产精品久久久久久婷婷天堂| 欧美华人在线视频| 欧美在线视频观看| 亚洲男人天堂2023| 97精品久久久| 国产精品吹潮在线观看| 国产精品高潮呻吟久久av黑人| 国内精品伊人久久| 4444欧美成人kkkk| 欧美日韩成人免费| 欧美在线日韩在线| 日韩在线视频中文字幕| 亚洲欧美日韩精品久久| 色狠狠久久aa北条麻妃| 成人黄色在线观看| 97在线看免费观看视频在线观看| 亚洲欧美制服另类日韩| 国模精品一区二区三区色天香| 国产精品2018| 久久久亚洲网站| 日韩精品视频在线观看网址| 亚洲香蕉伊综合在人在线视看| 色噜噜狠狠狠综合曰曰曰88av| 精品国产乱码久久久久久天美| 欧美激情国内偷拍| 国产精品久久久久久久久久小说| 中文日韩在线视频| 日韩成人中文字幕| 久久精品国产电影| 伊人伊人伊人久久| 色悠久久久久综合先锋影音下载| 欧美理论电影在线播放|