Add Text Label and Button to dynamic tableview cell programmatically with Swift

后端 未结 2 2063
情深已故
情深已故 2021-02-06 10:08

I have a dynamic tableview and a prototype cell which displays an array. My questions is how would I add a button which displays different names on each cell to the Left side of

相关标签:
2条回答
  • 2021-02-06 10:50

    You can implement like this

    let titleArray = ["a", "b", "c"]
    
    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 50
    }
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        //return no.of cell do you want
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cellHeight = tableView(self.tableView, heightForRowAtIndexPath: NSIndexPath(forRow: indexPath.row, inSection: indexPath.section))
        var cell = CustomCell(frame: CGRectMake(0, 0, self.view.frame.width, cellHeight), title: titleArray[indexPath.row])
        cell.cellLabel.text = //labelText
        cell.cellButton.addTarget(self, action: "buttonPressed:", forControlEvents: UIControlEvents.TouchUpInside)
    
        return cell
    }
    
    class CustomCell: UITableViewCell {
        var cellButton: UIButton!
        var cellLabel: UILabel!
    
        init(frame: CGRect, title: String) {
            super.init(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
    
            cellLabel= UILabel(frame: CGRectMake(self.frame.width - 100, 10, 100.0, 40))
            cellLabel.textColor = UIColor.blackColor()
            cellLabel.font = //set font here
    
            cellButton = UIButton(frame: CGRectMake(5, 5, 50, 30))
            cellButton.setTitle(title, forState: UIControlState.Normal)
    
            addSubview(cellLabel)
            addSubview(cellButton)
        }
    
        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    
        override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
            super.init(style: style, reuseIdentifier: reuseIdentifier)
        }
    }
    
    0 讨论(0)
  • 2021-02-06 10:54

    I got the solution for your question, please follow the below steps

    var data = ["iPad", "iPhone", "iWatch", "iPod", "iMac"]
    var buttonData = ["US","China","London","Canada","Japan"];
    
    
    //UITableViewDataSource Methods
    
     func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
     {
        return 80
     }
    
     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
     {
        return data.count
     }
    
     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
     {
    
        var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
    
        var label = UILabel(frame: CGRectMake(280.0, 14.0, 100.0, 30.0))
        label.text = data[indexPath.row]
        label.tag = indexPath.row
        cell.contentView.addSubview(label)
    
    
        let btn = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
        btn.backgroundColor = UIColor.greenColor()
        btn.setTitle(buttonData[indexPath.row], forState: UIControlState.Normal)
        btn.frame = CGRectMake(0, 5, 80, 40)
        btn.addTarget(self, action: "buttonPressed:", forControlEvents: UIControlEvents.TouchUpInside)
        btn.tag = indexPath.row
        cell.contentView.addSubview(btn)
    
        return cell
     }
    
     //Button Action is
     func buttonPressed(sender:UIButton!)
     {
        let buttonRow = sender.tag
        println("button is Pressed")
        println("Clicked Button Row is",buttonRow)
     }
    
    0 讨论(0)
提交回复
热议问题