自定义label和搜索框

拖一个table一个视图控制器即可

写一个视图控制器myviewcontroller

import UIKit

class myviewcotrollTableViewController: UITableViewController {
   
    let persons=Person.getData()
    override func viewDidLoad() {
        super.viewDidLoad()

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

   

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return persons.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
       //第一种完全由自己定义
        
//        var cell = tableView.dequeueReusableCellWithIdentifier("cell")
//        if cell==nil {
//           cell = UITableViewCell(style: .Default, reuseIdentifier: "cell")
//        }
//        let p = persons[indexPath.row]
//        let lbl = UILabel(frame: CGRectMake(0, 20, 100, 25))
//       
//        cell?.contentView.addSubview(lbl)
//         lbl.text=p.name
//  
//        return cell!
        //第二种直接获取写了一个mycell.xib
//                var cell = tableView.dequeueReusableCellWithIdentifier("cell")
//                if cell==nil {
//                   cell = NSBundle.mainBundle().loadNibNamed("mycell", owner: self, options: nil)[0] as? UITableViewCell
//                }
//                let p = persons[indexPath.row]
//                let lbl=cell?.viewWithTag(100) as? UILabel
//                lbl?.text = p.name
//          
//                return cell!
//        }
        //第三种:关联一个类,来获取mycell.xib
        var cell=tableView.dequeueReusableCellWithIdentifier("cell") as? mycellcontroller
        if cell == nil {
            //            let xx = NSBundle.mainBundle()
            //                .loadNibNamed("MyCell", owner: self, options: nil)
        cell = NSBundle.mainBundle().loadNibNamed("mycell", owner: self, options: nil)[0] as? mycellcontroller
            
        }
      let p = persons[indexPath.row]
          cell?.mylable.text = p.name
            return cell!
    
    }
    
}

mycell.xib如右图创建文件,把lable里的属性设为100

如下图拖的行和label把其他的东西删掉

再写一个行的控制,mylable要关联

@IBOutlet weak var mylable: UILabel!
    override func awakeFromNib() {
        super.awakeFromNib()
    }
    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }

写一个普通的视图实现搜索功能,

import UIKit

class TableViewController: UITableViewController {

    var persons = Person.getData()
    var filterPS = [Person]()
    var sc:UISearchController!
    
    override func viewDidLoad() {
        super.viewDidLoad()
      sc = UISearchController(searchResultsController: nil)
       tableView.tableHeaderView = sc.searchBar
        sc.searchResultsUpdater = self
        filterPS = persons
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

  

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return filterPS.count
    }

    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
        let p = filterPS[indexPath.row]
        
        cell.textLabel?.text=p.name
        return cell
    }



}
extension TableViewController: UISearchResultsUpdating{


    func updateSearchResultsForSearchController(searchController: UISearchController){
      let text = (searchController.searchBar.text)!
          filterPerson(text)
        tableView.reloadData()
    
    }
        func filterPerson(text:String){
        filterPS.removeAll()
            if text.characters.count <= 0 {
            filterPS = persons
            return
            
            }
            for p in persons{
            
                if p.name.containsString(text){
                
                filterPS.append(p)
                
                }
            }
        
        }
    

写一个person 类存数据

import Foundation

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
    
    static func getData() -> [Person] {
        return [Person(name: "1111"),
            Person(name: "2222"),
            Person(name: "3333")
        ]
    }
}

 

posted @ 2016-01-07 20:56  爱学习~天天学习  阅读(333)  评论(0编辑  收藏  举报