Swift - 来自另一个UITableViewCell的UITableViewCell访问

时间:2016-05-18 20:44:49

标签: swift uitableview swift2

我遇到了Swift的一些挑战。

我有一个带原型单元格的UITableView。 有3个细胞 前两个包含用户填写的文本字段。 第三个包含一个提交按钮。

非常简单!

我的问题是,只有当两个文本字段都包含文本时才需要启用“提交”按钮。

如果页面不是使用Table视图构建的,那么这很容易,但它是这样构建的,并且需求现在正在改变,这导致了我的问题。 这是一个安全问题/响应页面,所以由于前两个单元格在布局方面是相同的,所以TableView方法是有意义的。

我的问题是我不知道在其他单元格操作期间如何访问第三个单元格按钮。

基本上我在Textfield单元格中有TextDidChange的委托,但是我无法访问最后一个单元格中的按钮来启用它。

我可以轻松拥有一个将值或操作传播到ParentViewController的原型或委托,但这对我没有帮助,因为我需要访问第三个单元格中的按钮。

这里最好的方法是什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点,我将举一个例子:

思想: 基本上你需要你的模型来维护单元格的状态(在这种情况下是文本字段/按钮布局),然后每次更新textField时你可以检查它是否为空并更新按钮单元格的模型以反映(您可以调用reloadRowsAtIndexPaths,每次更新文本字段时,在我假设最后一个单元格的情况下),在示例中检查哪个单元格被编辑我使用tag属性。这将适用于任何长度的问题。)

这里我根据模型的属性启用了按钮。但是您也可以使用按钮单元格(但是您还需要更新模型,因为如果在视图上发生刷新,您将失去对单元格重用时启用/禁用操作的控制权):

if let cellButton = self.tblSample.cellForRowAtIndexPath(NSIndexPath(forRow: sampleData.count - 1, inSection: 0)) as? ButtonCellClass{

}

实施例: https://github.com/Abreu0101/TableViewButtonDisable