2016-11-04 37 views
0

我想弄清楚如何从有序的方式在tableview中的单元格中获取文本字段数据。到目前为止,我可以在每个文本字段中键入一个检索类型数据。要以正确的顺序执行此操作,但用户必须编辑第一个单元格...最后一个单元格,并且其他方式和数据的顺序不正确。在Swift(3.1)表格视图中从动态创建的单元格中获取有序的TextField数据

例如:

我有程序创建5个细胞与文本框,

  • textfield1的:我在这里输入的第二
  • 文本字段2:我在这里第四输入
  • 文本字段3:我输入这里先
  • textfield4:我在这里输入第五个
  • textfield5:我在这里输入第三个

我现在拥有它的方式我的数据数组看起来与这个数据完全相同,因为它是基于何时输入而不是单元格的顺序进行存储的。 我想键入上面的例子,但我的数据出来是这样的:

  • textfield1的:我打先在这里
  • 文本字段2:我打这里第二
  • 文本字段3:我打这儿第三
  • 文字栏:我在这里输入的第四
  • 文字栏:我打这儿第五

这里是我的文本框编辑代码:

@IBAction func TitleEditBegin(_ sender: UITextField) { 
} 

@IBAction func TitleEditEnd(_ sender: UITextField) { 
    print(sender.tag) // Debug 
    titleArray.append(sender.text!) 
} 

我知道暂时还有其他更改会附加到titleArray,但我想先解决顺序问题。

谢谢!

编辑:我忘了在我是如何创建的单元格添加的代码如下:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = TitleSessionTableView.dequeueReusableCell(withIdentifier: textCellIdentifier, for: indexPath) as! TitleSessionCell 

    cell.SessionTitleLabel.text = "Title" 
    // cell.SessionTitleField.text = "Default" 
    cell.SessionTitleField.tag = indexPath.row 
    cell.SessionTitleField.delegate = self 
    print(indexPath.row) // Debug 

    return cell 

} 

编辑2:添加在那里我定义文本字段。

import Foundation 
import UIKit 

class TitleSessionCell: UITableViewCell{ 

@IBOutlet weak var SessionTitleField: UITextField! 
@IBOutlet weak var SessionTitleLabel: UILabel! 


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


} 

回答

0

最简单的方法是使用我相信的字典。我会为所有的textField分配一个不同的标签。所以对于textField1,你会说textField1.tag = 1。我没有看到你的文本字段的创建,所以很难显示添加它的最佳方式,但是在处理之后,我会创建字典作为类变量。

var textFieldDictionary: [Int: String] = [:] 

,然后在文本添加到它像这样:

if sender.text != nil && sender.text != "" { 
    textFieldDictionary[sender.tag] = sender.text 
} 

然后当你想要检索的信息,做这样的事情:

for i in 0..<biggestTextFieldNumber { 
    if let text = textFieldDictionary[i] { 
     //do something with text 
     print(text) 
    } 
} 

或者你可以只抓住具体的数字值,只要你需要他们使用:

textFieldDictionary[numberYouWant] 

我希望这有助于!

+0

虽然我现在的问题是,无论先编辑哪个文本字段,都会给出sender.tag = 0。所以一旦发生,其他所有内容都会出现重击。有没有办法调用单元格来获取它的标签? – rutheferd

+0

你可以发布你的cellForRow函数 – Sethmr

+0

我做了编辑 – rutheferd

相关问题