按下按钮时添加 Table 视图单元格

Adding a Table View Cell when a button is pressed

我希望我的 swift 代码在按下按钮时添加另一个表格视图单元格。现在有 2 个 tableview 单元格。该按钮是橙色按钮,按下时应添加第三个绿色 tabview 单元格。添加第三个单元格的函数是 addCell。查看 numberOfRowsInSelection 以及定义 2 个单元格的区域。

import UIKit

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource, UIImagePickerControllerDelegate & UINavigationControllerDelegate {
    var arr = [1,1,3,3]
    var tableview = UITableView()
    var arrayThatStartsEmptyImage = [UIImage]()
    var currentIndex = 0

    var startBtnpress = UIButton()


    var selectedIndexPath = IndexPath(row: 0, section: 0)
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 2
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 118
    }

   
    
    
   
    
    
    
    
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! customtv
      
  
     
        
        return cell
    }
    
    @objc func addCell(){
        //add 3 cell
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        tableview.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height * 0.8)
        startBtnpress.frame = CGRect(x: 0, y: view.frame.height * 0.8, width: view.frame.width / 2  , height: view.frame.height / 5)
        view.addSubview(tableview)
        view.addSubview(startBtnpress)

        startBtnpress.backgroundColor = .orange
        tableview.register(customtv.self, forCellReuseIdentifier: "cell")
        tableview.delegate = self
        tableview.dataSource = self

      
 
        
    }
    
    
    
}

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
        
        return view
    }()
    
    
    
    override func layoutSubviews() {
        backView.clipsToBounds = true
        backView.frame =  CGRect(x: 0, y: 6, width: bounds.maxX  , height: 110)
        
        
    }

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

    }
    
    
    
}

这已经被问过 之前...

而不是 return 在 tableView(_:numberOfRowsInSection:) 中使用硬编码值,您想要 return 数据源中的项目数(我假设是 arr).

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

然后,只需添加一行

func addRowToEnd() {
    arr.append(5) /// not sure what the numbers mean though...
    tableView.beginUpdates()
    tableView.insertRows(at: [IndexPath(row: arr.count - 1, section: 0)], with: .automatic) /// animate the insertion
    tableView.endUpdates() 
}