2015-08-19 66 views
1

我有一个UITableView与几个单元格。每个单元格都有一个 标签和一个UITextField。当我加载ViewController时,UITextFields有初始值,用户可以编辑这些值。现在我想添加一个保存按钮来保存更改,但是我编辑后在获取UITextFields中的值时遇到问题。我认为我需要为文本框使用标签,但我不知道如何。这里是我的代码:如何获取UITableView中可编辑单元格的值? Swift

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell:EditProfileCell = tableView.dequeueReusableCellWithIdentifier("profile") as! EditProfileCell 
    if (indexPath.row == 1){ 
    cell.setRow("label", value: "initial value") 
    cell.itemValue.tag = indexPath.row 
} 

@IBAction func saveTapped(sender: UIButton) { 
    print(self.tableView(profileTableView, cellForRowAtIndexPath: NSIndexPath(forRow: 1, inSection: 1)).viewWithTag(1)) 
} 

当保存按钮被窃听,它打印的初始值,而不是编辑后的值。编辑后我需要获取帮助。

EDIT1:

我发现我可以在didSelectRowAtIndexPath方法功能编辑的值。但问题是当我点击文本字段(文本字段进入编辑模式)时,didSelectRowAtIndexPath不会被调用,直到我点击单元格内的空间但在文本字段之外。所以我的问题变成了当我只点击文本框时如何触发didSelectRowAtIndexPath。

+0

对类和is-a vs has-a的理解应该对你有很大的帮助。 –

+0

http://stackoverflow.com/questions/14562551/how-to-get-the-cell-value-of-a-selected-cell-from-table-view-in-iphone –

回答

0

的问题是,当你调用saveTapped里面您呼叫cellForRowAtIndexPath,并在那里你必须:

cell.setRow("label", value: "initial value") 

基本上这就是为什么你所得到的初始值。另一个问题是表格视图上的单元格被重用。也就是说,你可以有1000000条记录,但表格视图将只创建〜9-12个单元格,并将使用它们来显示任何1000000行的信息。

你需要做的是有一个model。某种对象,您可以在其中存储和检索单元格的这些值。一个自然的选择是你的情况下的数组包含字符串。请仔细检查tutorial,并特别注意NSArray *tableData;在那里的使用情况。

祝你好运! :D

相关问题