Ios 从ViewController中的UITableViewCell调用函数

Ios 从ViewController中的UITableViewCell调用函数,ios,swift,uitableview,Ios,Swift,Uitableview,我需要从TeamsVC调用TeamsCell中的函数deleteButtonShowHide,当plusbtn点击时。我正试图用协议teamsvcdegate来解决这个问题,但它不起作用(我的情况正好相反。但我不知道如何实现类似于cell.teamsCellDelegate=self TeamsCell import UIKit protocol TeamsCellDelegate { func deleteCell() } class TeamsCell: UITableVie

我需要从TeamsVC调用TeamsCell中的函数deleteButtonShowHide,当plusbtn点击时。我正试图用协议teamsvcdegate来解决这个问题,但它不起作用(我的情况正好相反。但我不知道如何实现类似于cell.teamsCellDelegate=self

TeamsCell

import UIKit

protocol TeamsCellDelegate {
    func deleteCell()
}



class TeamsCell: UITableViewCell {
    
    @IBOutlet weak var teamNameLbl: UILabel!
    @IBOutlet weak var deleteButton: UIButton!
    var teamsCellDelegate: TeamsCellDelegate?
    
    
    override func awakeFromNib() {
        super.awakeFromNib()
    }
    
    
    func updateCell(team: team) {
        teamNameLbl.text = team.name
    }
    
    
    @IBAction func deleteButtonTapped(_ sender: Any) {
        debugPrint("delet tapped")
        //deleteButtonShowHide()
        findAndDeleteTeam()
        teamsCellDelegate?.deleteCell()
    }
    
    func findAndDeleteTeam() {
        for i in 0...teams.count - 1 {
            if teams[i].name == teamNameLbl.text {
                teams.remove(at: i)
                break
            }
        }
    }
    
    func deleteButtonShowHide(){
        if teams.count < 3 {deleteButton.isHidden = true}
        if teams.count > 2 {deleteButton.isHidden = false}
    }
    
}

extension TeamsCell: TeamsVCDelegate {
    func deleteButtonSH() {
        debugPrint("XXX")
        deleteButtonShowHide()
    } 
}
导入UIKit
协议团队成员代表{
func deleteCell()
}
类TeamsCell:UITableViewCell{
@IBL:UILabel!
@IB按钮:UIButton!
var teamsCellDelegate:teamsCellDelegate?
重写func awakeFromNib(){
super.awakeFromNib()
}
func updateCell(团队:团队){
teamNameLbl.text=team.name
}
@iAction func deleteButtonTapped(\发送方:任何){
调试打印(“删除打印”)
//deleteButtonShowHide()
findAndDeleteTeam()
teamsCellDelegate?.deleteCell()
}
func findAndDeleteTeam(){
对于0个团队中的i…计数-1{
如果团队[i].name==teamNameLbl.text{
团队。移除(at:i)
打破
}
}
}
func deleteButtonShowHide(){
如果teams.count<3{deleteButton.ishiden=true}
如果teams.count>2{deleteButton.ishiden=false}
}
}
扩展TeamsCell:teamsvcdegate{
func deleteButtonSH(){
调试打印(“XXX”)
deleteButtonShowHide()
} 
}
TeamsVC

import UIKit

protocol TeamsVCDelegate {
    func deleteButtonSH()
}

class TeamsVC: UIViewController, UITableViewDelegate, UITableViewDataSource {
   
    @IBOutlet weak var plusBtn: UIButton!
    @IBOutlet weak var teamsTable: UITableView!
    var teamsVCDelegate: TeamsVCDelegate?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        teamsTable.delegate = self
        teamsTable.dataSource = self
        teamsTable.rowHeight = 55
        teamsTable.isScrollEnabled = false
        teamsTable.backgroundColor = nil
        teamsTable.separatorStyle = .none
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return teams.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if let cell = tableView.dequeueReusableCell(withIdentifier: "TeamsCell") as? TeamsCell {
            cell.updateCell(team: teams[indexPath.row])
            cell.teamsCellDelegate = self
            return cell
        }
        return UITableViewCell()
    }
    
    @IBAction func plusBtnTapped(_ sender: Any) {
        plusBtnHide()
        addTeam()
        teamsTable.reloadData()
        teamsVCDelegate?.deleteButtonSH()
        print(teams)
    }
    
    func plusBtnShow() {
        if teams.count < 5 {plusBtn.isHidden = false}
    }
    
    func plusBtnHide() {
        if teams.count == 4 { plusBtn.isHidden = true}
    }
    
}

extension TeamsVC: TeamsCellDelegate {
    func deleteCell() {
        self.teamsTable.reloadData()
        self.plusBtnShow()
    }
}
导入UIKit
协议组代理{
func deleteButtonSH()
}
类TeamsVC:UIViewController、UITableViewDelegate、UITableViewDataSource{
@IBOUTLE弱var plusBtn:UIButton!
@ibvar团队稳定:UITableView!
var teamsVCDelegate:teamsVCDelegate?
重写func viewDidLoad(){
super.viewDidLoad()
teamsTable.delegate=self
teamsTable.dataSource=self
teamsTable.rowHeight=55
teamsTable.IsScrolEnabled=false
teamsTable.backgroundColor=nil
teamsTable.separatorStyle=.none
}
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
返回队。计数
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
如果let cell=tableView.dequeueReusableCell(标识符为“TeamsCell”)为?TeamsCell{
cell.updateCell(团队:团队[indexPath.row])
cell.teamsCellDelegate=self
返回单元
}
返回UITableViewCell()
}
@iAction func plusBtnTapped(uu发送方:任意){
plusBtnHide()
addTeam()
teamsTable.reloadData()
teamsVCDelegate?.deleteButtonSH()
打印(团队)
}
func plusBtnShow(){
如果teams.count<5{plusBtn.ishiden=false}
}
func plusBtnHide(){
如果teams.count==4{plusBtn.ishiden=true}
}
}
扩展TeamsVC:TeamsCellDelegate{
func deleteCell(){
self.teamsTable.reloadData()
self.plusBtnShow()
}
}

加载/设置单元格时,可以调用
删除按钮SHOWHIDE
函数:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCell(withIdentifier: "TeamsCell") as? TeamsCell {
        cell.updateCell(team: teams[indexPath.row])
        cell.deleteButtonShowHide()  // <-- HERE
        cell.teamsCellDelegate = self
        return cell
    }
    return UITableViewCell()
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
如果let cell=tableView.dequeueReusableCell(标识符为“TeamsCell”)为?TeamsCell{
cell.updateCell(团队:团队[indexPath.row])

cell.deleteButtonShowHide()//加载/设置单元格时,可以调用
deleteButtonShowHide
函数:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCell(withIdentifier: "TeamsCell") as? TeamsCell {
        cell.updateCell(team: teams[indexPath.row])
        cell.deleteButtonShowHide()  // <-- HERE
        cell.teamsCellDelegate = self
        return cell
    }
    return UITableViewCell()
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
如果let cell=tableView.dequeueReusableCell(标识符为“TeamsCell”)为?TeamsCell{
cell.updateCell(团队:团队[indexPath.row])

cell.deleteButtonShowHide()//在计算行数时,可以通过设置“显示/隐藏”按钮来简化

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if teams.count < 5 {plusBtn.isHidden = false}
    if teams.count == 4 { plusBtn.isHidden = true}
    return teams.count
}
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
如果teams.count<5{plusBtn.ishiden=false}
如果teams.count==4{plusBtn.ishiden=true}
返回队。计数
}
并在创建单元格时设置按钮的可见性:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCell(withIdentifier: "TeamsCell") as? TeamsCell {
        cell.updateCell(team: teams[indexPath.row])
        // cell.teamsCellDelegate = self
        cell.deleteButton.isHidden = (teams.count < 3)
        return cell
    }
    return UITableViewCell()
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
如果let cell=tableView.dequeueReusableCell(标识符为“TeamsCell”)为?TeamsCell{
cell.updateCell(团队:团队[indexPath.row])
//cell.teamsCellDelegate=self
cell.deleteButton.ishiden=(teams.count<3)
返回单元
}
返回UITableViewCell()
}

因此,不需要委托,单元格也不必知道模型(团队)

在计算行数时,您可以通过设置“显示/隐藏”按钮来简化

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if teams.count < 5 {plusBtn.isHidden = false}
    if teams.count == 4 { plusBtn.isHidden = true}
    return teams.count
}
func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
如果teams.count<5{plusBtn.ishiden=false}
如果teams.count==4{plusBtn.ishiden=true}
返回队。计数
}
并在创建单元格时设置按钮的可见性:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCell(withIdentifier: "TeamsCell") as? TeamsCell {
        cell.updateCell(team: teams[indexPath.row])
        // cell.teamsCellDelegate = self
        cell.deleteButton.isHidden = (teams.count < 3)
        return cell
    }
    return UITableViewCell()
}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
如果let cell=tableView.dequeueReusableCell(标识符为“TeamsCell”)为?TeamsCell{
cell.updateCell(团队:团队[indexPath.row])
//cell.teamsCellDelegate=self
cell.deleteButton.ishiden=(teams.count<3)
返回单元
}
返回UITableViewCell()
}

因此,无需委托和计算单元就不必知道模型(团队)

团队
数组来自何处?代码中没有此类数组的实例。该
团队
数组来自何处?y中没有此类数组的实例