Swift 2.0 - UITableView Template

作者: sunlitamo | 来源:发表于2016-04-28 23:05 被阅读69次

Overview:
UITableView 一直都是初学者入门iOS的一个很好的切入点,网上已经有很多非常优秀详细的教程了,在这里我将为各位初学者提供一个UITableView的简单模板,涵盖的都是很初级的内容,希望可以为大家入门Swift出一份绵薄之力。

Example:

class TodoViewController:UITableViewController{
override func viewDidLoad() {
    
    self.tableView.delegate = self
    self.tableView.dataSource = self

    //UITableView 所关联的数据模型
    var todos: [TodoModel] = []
    navigationItem.leftBarButtonItem = editButtonItem()
    NSNotificationCenter.defaultCenter().addObserver(self,selector: #selector(reloadData), name: "reload", object: nil)
}
// 表示一个UItableView section 里显示几行TableView Cell
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return todos.count
}
// 绘制 TableView Cell 功能的最主要的一个方法,在这里将你自定义的Cell(如果有)与你所想显示的数据进行连接。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:NSIndexPath) ->UITableViewCell {
    let cell = self.tableView.dequeueReusableCellWithIdentifier("todoCell") as! TodoCell
    cell.despTxt.text = todos[indexPath.row].title
    cell.todoImg.image = todos[indexPath.row].image
    return cell
}
// 定义点击 TableView Cell 时的触发事件
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let item = todos[indexPath.row]
    let detailVC = self.storyboard!.instantiateViewControllerWithIdentifier("DetailViewController")
        as! DetailViewController
    detailVC.todoItem = (item,indexPath.row,true)
    self.navigationController?.pushViewController(detailVC, animated: true)
}
// 定义默认使用的 UITableView 编辑模式
override func tableView(tableView: UITableView,  editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { 
    return UITableViewCellEditingStyle.Delete 
}
// 定义 UITableView 编辑模式被触发时的反应事件
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){
    if editingStyle == UITableViewCellEditingStyle.Delete {
        todos.removeAtIndex(indexPath.row)
        self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
    }   
}
// 激活 UITableView Cell 重新排序功能并定义被触发时的反应事件
override func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {
    let todo = todos.removeAtIndex(sourceIndexPath.row)
    todos.insert(todo, atIndex: destinationIndexPath.row)
}
// 定义某一个或某一些 UITableViewCell 是否能够被重新排序
override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
   if indexPath.row == 1 { 
   return false 
   } 
   return true
}
// 在当前视图控制器由导航控制器控制且导航栏中包含[editButtonItem]时,若UIViewController的editing为NO,则显示为”Edit”,若editing为YES,则显示为”Done”。
// 可利用此按钮在设置UIViewController的editing状态时同时设置tableView的编辑状态。
override func setEditing(editing: Bool, animated: Bool) {
    super.setEditing(editing,animated:animated)
    self.tableView.setEditing(editing, animated: animated)   
}

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

</code></pre>

注:上述Sample Code只列出了UITableView最常见的几个功能,如果各位同学感兴趣,还请自行查阅相关资料进行学习。共勉~!

相关文章

网友评论

    本文标题:Swift 2.0 - UITableView Template

    本文链接:https://www.haomeiwen.com/subject/dsuhrttx.html