swift -> UITableView 编辑模式

TableView 参考 :  http://mft.iteye.com/admin/blogs/2314641

class Do_bookmark: UIViewController,UITableViewDelegate,UITableViewDataSource {

    
  
    var tb:UITableView!;
    
    //var data:[[String:Any]]!;
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // set nav bar
        self.title = "列表"
        let rightBtn = UIBarButtonItem(title: "编辑", style: .plain, target: self, action: #selector(Do_bookmark.navRightBtn));
        self.navigationItem.rightBarButtonItem = rightBtn
    
        //
        //let f:CTFrame = self.view.frame as! CTFrame;
        
        tb = UITableView(frame: CGRect(x: 0, y: 0,width: alert_width, height: alert_height));
        tb.delegate = self
        tb.dataSource = self;
        //进入编辑状态是否可以点击每行
        tb.allowsSelectionDuringEditing = true
        self.view.addSubview(tb);
        
        
    }
    
    
    
    func navRightBtn(){//根据Table 的编辑状态 显示 “编辑”还是“完成”
        if(tb.isEditing == true){
            tb.setEditing(false, animated: true);
            tb.isEditing = false;
            self.navigationItem.rightBarButtonItem?.title = "编辑";
        }else{
            tb.setEditing(true, animated: true)
            tb.isEditing = true;
            self.navigationItem.rightBarButtonItem?.title = "完成";
        }

         
    }
   
    
    var data = ["数据0","数据1","数据2","数据3","数据4","数据5","数据6","数据7","数据8","数据9","数据10","数据11"]
    //每行有几个区块
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }
    //多少行
    func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return data.count
        
    }

    //-------- 进入编辑模式 ---------    
    
    //设置cell 是否允许拖动排序
    func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
        if(indexPath.row == 0){//如果是第一行就不允许拖动
            return false
        }else{
            return true
        }
    }
    
    //拖动排序 后  时 触发
    func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
        //data.chan
        print("move row at")
        //data.exchangeObject(at: (sourceIndexPath as NSIndexPath).row, withObjectAt: (destinationIndexPath as NSIndexPath).row)
    }
    //进入编辑模式后每行的显示样式
    func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
        if(indexPath.row == 0){//如果是第一行就不显示删除
            return UITableViewCellEditingStyle.none
        }else{
            return UITableViewCellEditingStyle.delete
        }
        
    }
    //对应行是否需要缩进
    func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
        if(indexPath.row == 0){//如果是第一行就不缩进
            return false
        }else{
            return true
        }
    }
    //增加左划显示删除, 
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        //如果点击了删除
        if(editingStyle == UITableViewCellEditingStyle.delete){
            print("you do del")
            
            // 修改数据源 必须 要 执行,否则 会出错
            data.remove(at: indexPath.row);
            //删除 表 视图 对应的行
            tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.top)
        }
    }
    
    //\\========= 进入编辑模式 ===============
    
    
    //点击每行执行
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if(indexPath.row == 0){
            self.navigationController?.pushViewController(Do_history(), animated: true)
        }
        
    }
    //设置分割线位移
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        cell.separatorInset = UIEdgeInsets(top: 0, left: 50, bottom: 0, right: 0);
     
    }
    
    // 开始往每行写内容
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //---
     
        
        let cell = BookMarkViewCell.init(style: UITableViewCellStyle.default, reuseIdentifier: "diy_cell") as BookMarkViewCell;
        //UITableViewCellAccessoryDisclosureIndicator;
       
        cell.title.text = data[indexPath.row];
        cell.logo.image = #imageLiteral(resourceName: "bookmark_icon")
       
        //去除点击后的显示灰色背景效果
        cell.selectionStyle = UITableViewCellSelectionStyle.none
        
        return cell;
        //====
    }

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

猜你喜欢

转载自mft.iteye.com/blog/2377055