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