从其中的按钮删除tableview单元格

问题描述

我希望我的快速代码从单元格内部的按钮中删除表格视图单元格。如果用户从带有2的标签的单元格中单击删除按钮,则应删除该单元格。这样您将看到0、1、3、4的像元。删除按钮不应删除单元格底部的单元格。每个删除底部仅应删除该单元格。我认为您可以在类视图控制器中创建一个特定的函数来完成此操作。

import UIKit

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    var numberOfRows = 5

    func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int { numberOfRows }

    func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat { 118 }

    var tableView = UITableView()
    var selectedIndexPath = IndexPath(row: 0,section: 0)

    override func viewDidLoad() {
        super.viewDidLoad()

        setTableVIew()
    }


    func setTableVIew(){
    
          
         
       
        
        let VCframe = view.frame
        let height = VCframe.height * 0.8
           
        let widthx = VCframe.width

   
             tableView.frame = CGRect(x: 10,y: 0,width: widthx - 20,height: height)
          
        tableView.delegate = self
        tableView.dataSource = self
        view.addSubview(tableView)
  
      
        tableView.register(customtv.self,forCellReuseIdentifier: "cell")
    }
 

 func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let cell = tableView.dequeueReusableCell(withIdentifier: "cell",for: indexPath) as! customtv
       //cell.textLabel?.text = "\(indexPath.row)"   // Don't Do this.
       cell.lbl.text = "\(indexPath.row)"            // Do this.

       return cell
   }


    
}
class customtv: UITableViewCell {
    lazy var backView : UIView = {
      let view = UIView(frame: CGRect(x: 10,y: 6,width: self.frame.width,height: 110))
      view.backgroundColor = .green
      print(self.frame.width)
          return view
      }()
      

      
      override func layoutSubviews() {
         backView.clipsToBounds = true
         backView.frame =  CGRect(x: 0,width: bounds.maxX,height: 110)
   

      }
    lazy var lbl : UILabel = {
        let press = UILabel(frame: CGRect(x: 0,y: 3,width: 120,height: 50))
        press.backgroundColor = .yellow
        press.text = String("1")
            
        return press
    }()

   
 


 
    lazy var deleteBTN : UIButton = {
        let press = UIButton(frame: CGRect(x: 200,width: 65,height: 50))
        press.backgroundColor = .systemBlue
        press.setTitle("DELETE",for: .normal)

        return press
    }()

 

    override func setSelected(_ selected: Bool,animated: Bool) {
        super.setSelected(animated,animated: true)
        addSubview(backView)
        backView.addSubview(deleteBTN)
        backView.addSubview(lbl)
    }
}

解决方法

代替

var numberOfRows = 5

使用数组

var arr = [0,1,2,3,4]

然后

func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
    return arr.count 
}

func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   let cell = tableView.dequeueReusableCell(withIdentifier: "cell",for: indexPath) as! customtv
   cell.lbl.text = "\(arr[indexPath.row])"  
   cell.deleteBTN.tag = indexPath.row
   cell.deleteBTN.addTarget(self,action:#selector(delete(_:)),for: .touchUpInside) 
   return cell
}
@objc func handleRegister(_ sender: UIButton){
     arr.remove(at:sender.tag)
     tableView.deleteRows(at:[Indexpath(row:sender.tag,section:0)],with:.none)
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...