tableViewCell的操作

在iOS的开发过程中,tableView的使用永远都是最常用的控件。今天学习了一下tableViewCell的操作。代码并不是很复杂,如果有OC开发经验的人,应该很容易看懂的。

class ViewController: UIViewController ,UITableViewDelegate, UITableViewDataSource
{
//    因为Swift中要求变量或常量在声明时就要初始化其值,所以我们在实际开发中,声明变量或常量时使用可选类型。后面代码中使用到以上变量时需要加 ! 对其解包。
    var tableView : UITableView?
//    var items :NSMutableArray?
    // 例如可以不用可选,
    var items :NSMutableArray = []
    var leftBtn:UIButton?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.items = NSMutableArray()
        // 初始化tableView
        setupViews()
        // 右边添加按钮
        setupRightBarButtonItem()
        // 左边删除按钮
        setupLeftBarButtonItem();
    }
    
    func setupViews()
    {
        self.tableView = UITableView(frame:self.view!.frame)
        self.tableView!.delegate = self
        self.tableView!.dataSource = self
        self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
        self.view.addSubview(self.tableView!)
    }
    
    func setupLeftBarButtonItem()
    {
        self.leftBtn = UIButton(type: UIButtonType.Custom)
        self.leftBtn!.frame = CGRectMake(0,0,50,40)
        self.leftBtn!.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)
        self.leftBtn!.setTitle("Edit", forState: UIControlState.Normal)
        self.leftBtn!.tag = 100
        self.leftBtn!.userInteractionEnabled = false
        self.leftBtn!.addTarget(self, action: "leftBarButtonItemClicked", forControlEvents: UIControlEvents.TouchUpInside)
        let barButtonItem = UIBarButtonItem(customView: self.leftBtn!)
        self.navigationItem.leftBarButtonItem = barButtonItem
    }
    
    func setupRightBarButtonItem()
    {
        let barButtonItem = UIBarButtonItem(title: "Add", style: UIBarButtonItemStyle.Plain, target: self, action: "rightBarButtonItemClicked")
        self.navigationItem.rightBarButtonItem = barButtonItem
    }
    
    func rightBarButtonItemClicked()
    {
        
        let row = self.items.count
        let indexPath = NSIndexPath(forRow:row,inSection:0)
        self.items.addObject("1")
        self.tableView?.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Left)
        self.leftBtn!.userInteractionEnabled = true
    }
    
    func leftBarButtonItemClicked()
    {
        if (self.leftBtn!.tag == 100)
        {
            // 设置当前tableView可编辑
            self.tableView?.setEditing(true, animated: true)
            self.leftBtn!.tag = 200
            self.leftBtn?.setTitle("Done", forState: UIControlState.Normal)
        }
        else
        {
            self.tableView?.setEditing(false, animated: true)
            self.leftBtn!.tag = 100
            self.leftBtn?.setTitle("Edit", forState: UIControlState.Normal)
        }
        
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return self.items.count
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = tableView .dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
        cell.textLabel!.text = String(format: "%i", indexPath.row+1)
        return cell
    }
    
    // 指定可编辑的行
    func tableView(tableView: UITableView, setEditing indexPath: NSIndexPath) -> Bool
    {
        return true
    }
    
    // 编辑完成
    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
    {
        self.items.removeObjectAtIndex(indexPath.row)
        
        self.tableView?.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top)
        if (self.items.count == 0)
        {
            self.leftBtn!.userInteractionEnabled = false
        }
        
    }
    
    // 编辑样式
    func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle
    {
        return (UITableViewCellEditingStyle.Delete)
    }
    
    // 指定哪些行可以移动
    func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool
    {
        return true
    }
    
    // 移动完成
    func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath)
    {
        self.tableView?.moveRowAtIndexPath(sourceIndexPath, toIndexPath: destinationIndexPath)
        self.items.exchangeObjectAtIndex(sourceIndexPath.row, withObjectAtIndex: destinationIndexPath.row)
    }
    
    // 限制在同一分区移动
    func tableView(tableView: UITableView, targetIndexPathForMoveFromRowAtIndexPath sourceIndexPath: NSIndexPath, toProposedIndexPath proposedDestinationIndexPath: NSIndexPath) -> NSIndexPath {
        
        if sourceIndexPath.section == proposedDestinationIndexPath.section {
            
            return proposedDestinationIndexPath
        }
        return sourceIndexPath
    }
    
    // 点击cell
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
    {
        print("row = %d",indexPath.row)
    }
    
}

 

posted @ 2016-01-06 22:39  妄想孤独  阅读(217)  评论(0编辑  收藏  举报