根据另一个单元格中的值更改自定义单元格中的值

时间:2016-04-24 13:15:15

标签: ios swift uitableview

我有一个包含自定义单元格构建的表格视图,自定义单元格有两个标签和一个文本字段。当用户编辑文本字段时,标签2在当前单元格中更改。但我希望第二个单元格中的值(Label2)也会根据当前单元格中的值而改变。示例:第一个单元格中的值为x,第二个单元格中的值应为2 + x。我该怎么认识到这一点?在我的视图控制器中,我使用以下代码:

var myString = [String]()

@IBOutlet weak var TableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
    myString = ["a", "b"]
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return myString.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CalculationsTableViewCell

    tableView.tableFooterView = UIView(frame: CGRectZero) //hide empty cells in UITableView

    cell.Label?.text = myString[indexPath.row]

    return cell

}

我的TableViewCell:

@IBOutlet weak var Label: UILabel!

@IBOutlet weak var Label2: UILabel!

@IBOutlet weak var TextField: UITextField!

@IBAction func TextFieldEditingChanged(sender: AnyObject) {

    var value: Double

    value = NSString(string: TextField.text!).doubleValue

    Label2.text = "\(value)"
}

override func awakeFromNib() {
    super.awakeFromNib()
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
}

1 个答案:

答案 0 :(得分:1)

首先,您应该/可以使用委托模式从单元格传回控制器:

  1. 使用名为eg的方法创建协议userEnteredNumber
  2. 让您的视图控制器符合该协议
  3. 在名为TableViewCell的{​​{1}}中创建一个字段 - 其类型应为先前创建的协议
  4. delegate中设置单元格时将cellForRowAtIndexPath分配给单元格的self属性
  5. 用户输入值后,立即调用先前设置的委托
  6. 上的委托方法

    其次,你必须以某种方式记住你的应用程序的状态。带有tableviews的东西是iOS可以决定在任何时候(理论上)重新加载tableView的内容,并且你的控制器必须跟踪每个单元应该具有的确切内容。

    我不知道您的应用程序的具体要求是什么,但您应该将通过协议方法传输的值分配给viewController中的某个变量。然后触发tableView delegate,最后你必须改变reloadData方法,根据存储的值设置某些单元格的所需属性。