我有一个包含自定义单元格构建的表格视图,自定义单元格有两个标签和一个文本字段。当用户编辑文本字段时,标签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)
}
答案 0 :(得分:1)
首先,您应该/可以使用委托模式从单元格传回控制器:
userEnteredNumber
TableViewCell
的{{1}}中创建一个字段 - 其类型应为先前创建的协议delegate
中设置单元格时将cellForRowAtIndexPath
分配给单元格的self
属性其次,你必须以某种方式记住你的应用程序的状态。带有tableviews的东西是iOS可以决定在任何时候(理论上)重新加载tableView的内容,并且你的控制器必须跟踪每个单元应该具有的确切内容。
我不知道您的应用程序的具体要求是什么,但您应该将通过协议方法传输的值分配给viewController中的某个变量。然后触发tableView delegate
,最后你必须改变reloadData
方法,根据存储的值设置某些单元格的所需属性。