Add together all of the labels in tableview cells

i want my swift code to add together all of the tableview cells together and convert it from a string to a int. The code should be called from the view did load func. The total should be 3 when all of the labels are added together. Look at my comment in view did load for more info. The code does not use storyboards.

import UIKit
 
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
 
    var numberOfRows = 3
 
    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()
        
        //print the sum of the labels added togther on the tableview cells
        
    }
 
 
    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.lbl.text = "\(indexPath.row)"
    
 
       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, y: 6, 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
    }()
 
   
 
 
 
 
 
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(animated, animated: true)
        addSubview(backView)
    
        backView.addSubview(lbl)
    }
}

Hi @timswift,
It is unclear what you want to do, can you reiterate the same please?

if you want to make 3 cells into 1 cell, then you need to change the numberOfRows and pass it to the TableView

Secondly, if you want to parse a string into int, you can try using the Int initializer and pass it the string and if the result is nil then that string cannot be converted into a string otherwise you get an int with the number

Thirdly, if what you are after is say there is a number on each of the cells and you want to display the total of all those cells, then you do not work with the TableCells or the UI, you use the dataSource and calculate all of that.

cheers,

This topic was automatically closed after 166 days. New replies are no longer allowed.