自定义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") ] } }