一、項目介紹
這個項目的功能是我點擊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