點擊cell中的按鈕加載自定義視圖

一、項目介紹

這個項目的功能是我點擊tableView中cell的按鈕,然後加載一個自定義的視圖到這個cell中

效果如圖

這裏寫圖片描述

這裏寫圖片描述

二、開發要求

1.swift3.0

2.Xcode8.2

三、步驟講解

1.創建xib文件,並初始化xib對應的.swift文件

這裏寫圖片描述

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

2.講解下上面的代碼
 // 系統自身的方法
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    // 重新系統的方法
    convenience init() {
        var nibNameOrNil = String?("MyViewViewController")//這裏根據自己xib名

        //考慮到xib文件可能不存在或被刪,故加入判斷
        if Bundle.main.path(forResource: nibNameOrNil, ofType: "xib") == nil {

            nibNameOrNil = nil
        }

        self.init(nibName: nibNameOrNil, bundle: Bundle.main)


    }


    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

這個代碼是寫在這個文件

class MyViewViewController: UIViewController
3.加載視圖的方法
 // 加載自定義的視圖
    func btnClicked(sender:UIButton) {

        // 定義自定義的視圖
        let  myView = MyViewViewController.init().view

        // 拿到點擊的cell
        let indexPath:IndexPath = [0,sender.tag]
        let cell:UITableViewCell = tableView.cellForRow(at: indexPath)!//這樣要拿到點擊的cell,就得傳indexPath
        //所以通過btn.tag來傳

        cell.addSubview(myView!)


    }
4.怎麼傳tag
 // cell
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let  cell = tableView.dequeueReusableCell(withIdentifier: "cellID")

        cell?.textLabel?.text = "點我啊"
        let btn = UIButton(frame: CGRect(x: 200, y: 20, width: 50, height: 50))
        btn.backgroundColor = UIColor.blue

       cell?.addSubview(btn)

        // 這個就可以把indexPath.row傳來過,通過設置在 btn.tag中
        btn.tag = indexPath.row
        btn.addTarget(self, action: #selector(btnClicked(sender:)), for: .touchUpInside)



        return cell!
    }

以上的代碼就可以實現該項目的功能,如果需要#demo

demo地址:

https://github.com/ChenZeBin/cellAddMyView.git

發佈了38 篇原創文章 · 獲贊 10 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章