add button in footer tableview in swift

15,587

I have tested your code and it is working fine but if it is not working for you then there is one more way to do it go to your ViewController in storyBoard then add a new view blow your cell as shown below:

enter image description here

After that you can connect an action of that button with this code:

@IBAction func btn(sender: AnyObject) {

    println("Working")
}

Check THIS sample code. This will work fine.

HERE is Sample project with your code.

Share:
15,587
Zahed Ri
Author by

Zahed Ri

Updated on June 04, 2022

Comments

  • Zahed Ri
    Zahed Ri almost 2 years

    I want to add a button in a table footer. I have written this code but the button does not work.

    func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        var footerView : UIView?
        footerView = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, 50))
        footerView?.backgroundColor = UIColor.blackColor()
    
        let dunamicButton = UIButton.buttonWithType(UIButtonType.System) as! UIButton
        dunamicButton.backgroundColor = UIColor.greenColor()
        dunamicButton.setTitle("Button", forState: UIControlState.Normal)
        dunamicButton.frame = CGRectMake(0, 0, 100, 50)
        dunamicButton.addTarget(self, action: "buttonTouched:", forControlEvents: UIControlEvents.TouchUpInside)
    
        footerView?.addSubview(dunamicButton)
    
        return footerView
    }
    
    func buttonTouched(sender:UIButton!){
    println("diklik")
    }
    
    func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 50.0
    }
    

    Thanks!

    edit my class tableView

    import UIKit

    import GoogleMobileAds

    class MenuViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, SetingTableViewControllerDelegate, UINavigationControllerDelegate {

    @IBOutlet weak var tabelView: UITableView!
    
     var data = ["BINATANG","BUAH","MAKANAN","SAYURAN","TUBUH","RUMAH","SEKOLAH","WARNA","ALAM","KENDARAAN","MAINAN"]
    
    
    
    override func viewDidLoad() {
    
        super.viewDidLoad()
    
            self.tabelView.rowHeight = 100.0
    
    }
    

    func SetingTableViewControllerDidCancel(controller : SetingTableViewController)

    {
    
        dismissViewControllerAnimated(true, completion: nil)
    
    }
    
    func SetingTableViewControllerDidDone(controller : SetingTableViewController){
    
        dismissViewControllerAnimated(true, completion: nil)
    
    
    
    }
    
    override func didReceiveMemoryWarning() {
    
        super.didReceiveMemoryWarning()
    
        // Dispose of any resources that can be recreated.
    
    }
    
    
    
    func tableView(tableView: UITableView,
    
        numberOfRowsInSection section: Int) -> Int {
    
        return data.count
    
    }
    
    
    
    func tableView(tableView: UITableView,
    
        cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    
        let cell = self.tabelView.dequeueReusableCellWithIdentifier("cell")
    
        as! KategoriCell
    
    
    
            cell.imgCell.image = UIImage(named: data1[indexPath.row]+"2")
    
            cell.labelCell.text = data[indexPath.row]
    
    
    
        return cell
    
    }
    
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    
            if segue.identifier == "playId"{
    
            let indexPath = tabelView.indexPathForSelectedRow()
    
    
    
            let item = data[indexPath!.row]
    
    
    
            let detailViewController = segue.destinationViewController as! PlayViewController
    
            detailViewController.kategoriKe = indexPath!.row
    
            }
    
            else if segue.identifier == "settingId"{
    
                let navigationController = segue.destinationViewController
    
                    as! UINavigationController
    
                let controller = navigationController.topViewController
    
                    as! SetingTableViewController
    
                 controller.delegate = self
    
            }
    
    }
    
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    
        var selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
    
    }
    
    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
    
       NSUserDefaults.standardUserDefaults().setInteger(indexPath.row, forKey: "kategoriIdx")
    

    }

    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    
        var height : CGFloat
    
        height = 50
    
        return height
    
    }
    
    
    
     func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    
        var footerView : UIView?
    
        footerView = UIView(frame: CGRectMake(0, 0, tableView.frame.size.width, 50))
    
        footerView?.backgroundColor = UIColor.blackColor()
    
    
    
        let dunamicButton = UIButton.buttonWithType(UIButtonType.System) as! UIButton
    
        dunamicButton.backgroundColor = UIColor.greenColor()
    
        dunamicButton.setTitle("Button", forState: UIControlState.Normal)
    
        dunamicButton.frame = CGRectMake(0, 0, 100, 50)
    
        dunamicButton.addTarget(self, action: "buttonTouched:", forControlEvents: UIControlEvents.TouchUpInside)
    
    
    
        footerView?.addSubview(dunamicButton)
    
    
    
        return footerView
    
    }
    
    
    
    func buttonTouched(sender:UIButton!){
    
        println("diklik")
    
    }
    
    
    
    func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    
        return 50.0
    
    }
    
    
    
    func navigationController(navigationController: UINavigationController,
    
        willShowViewController viewController: UIViewController,
    
        animated: Bool) {
    
        if viewController === self {
    
        NSUserDefaults.standardUserDefaults().setInteger(
    
        -1, forKey: "kategoriIdx")
    
        }
    
    }
    

    }