Swift - 按下UIButton时不调用另一个类的函数

时间:2016-11-26 01:18:03

标签: ios swift

在这里完成新手,我尝试从tabelViewCell创建一个按钮,按下时显示其行号。

这里是tableViewCell的代码:

    var myTableViewController: tableViewController?

    @IBOutlet var addButton: UIButton!


    @IBAction func addButtonPressed(_ sender: Any) { 
    myTableViewController?.addCellToHome(self) //call add function
}

来自tableViewController:

func addCellToHome(_ cell: UITableViewCell) //specifies what is to be done when addButton is pressed
{

    let row = tableView.indexPath(for: cell)

    print(row as! String)
}

有人可以告诉我我做错了什么吗?我在addCellToHome中插入了一个断点,结果发现它从未被调用过。完成难倒。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我认为您应该为单元格制定委托协议,例如MyCellDelegate

See guide to delegates

或者从tableViewController中的cellForRow(at: IndexPath)向单元格按钮添加一个动作。

See guide to button actions

答案 1 :(得分:-1)

我的预感是你正在创建tableViewController的新实例,而不是使用内存中的当前实例。请尝试以下操作,而不是创建VC的新实例。

@IBAction func addButtonPressed(_ sender: Any) { 
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let myTableViewController = storyboard.instantiateViewController(withIdentifier :"tableViewController") as! tableViewController
    myTableViewController?.addCellToHome(self) //call add function
}

如果您打算在其他方法调用中使用此VC,您也可以像在原始帖子中一样初始化类中任何函数之外的myTableViewController