使用自定义表格视图单元格从UITextField获取数据

时间:2018-04-19 21:56:35

标签: ios swift uitableview xcode8

我正在构建一种数据库,因此我创建了一个包含自定义单元格的表视图,以便用户可以将所请求的数据插入到相应的文本字段中。这就是它到现在为止的样子。

http://localhost:1337/my.domain.com/path/to/resource

这是我为实现这一目标而编写的代码。

class customCell1: UITableViewCell {

    @IBOutlet weak var cc1TextField1: UITextField!
    @IBOutlet weak var cc1TextField2: UITextField!
    @IBOutlet weak var cc1TextField3: UITextField!

    @IBOutlet weak var cc1Label1: UILabel!
    @IBOutlet weak var cc1Label2: UILabel!
    @IBOutlet weak var cc1Label3: UILabel!

    @IBOutlet weak var cc1MainLabel: UILabel!

}

简而言之,在一个Swift文件中,我创建了一个名为customCell1的类,而在我调用InputDataController的ViewController中,我插入了这些代码行,其中{{1是有关不同标题的字符串向量,必须分配给每行中的每个标签。

inputDataString

现在我的问题是,一旦用户在文本字段中添加了所有这些值并单击了我在导航栏上添加的保存按钮,我如何从各个文本字段中获取所有数据并将它们分配给变量(s)以便我可以将这些值用于某些计算。此外,我在哪里添加这些代码行,以便一切正常。

3 个答案:

答案 0 :(得分:0)

您可以在导航栏中的按钮操作中按for获取所有数据:

let fabrics = [String]()
let fittings = [String]()
let furnitures = [String]()
for index in 0 ... inputDataString.count-1 {
    fabrics.append((tableView.cellForRow(at: index) as! customCell1).cc1TextField1.text)
    fittings.append((tableView.cellForRow(at: index) as! customCell1).cc1TextField2.text)
    furnitures.append((tableView.cellForRow(at: index) as! customCell1).cc1TextField3.text)
}

答案 1 :(得分:0)

在保存按钮的IBAction内部(假设你的tableView与IBAction在同一个类中),你可以迭代每个可见的单元格,就像所讨论的那样here然后在迭代代码里面你可以插入你将拥有的任何持久存储。例如:

@IBAction func saveButtonTapped(_ sender: Any) {
    let cells: [CustomCell1] = self.tableView.visibleCells as? [CustomCell1] ?? []
    for cell in cells {
        //Do the saving for each cell
    }
}

请记住,tableViews不会跟踪任何因可回收而无法看到的单元格。如果你需要获得比可见单元格更多的数据,那么当单元格不再可见时,你必须以某种方式将单元格的信息保存到临时数组或tableview数据源中(一个好的地方可能在tableView函数中) didEndDisplayingCell)然后您可以在需要保存时迭代数据源或数组。

我希望这有助于^^

答案 2 :(得分:0)

首先,您应该使用@IBAction将导航栏上的按钮连接到代码。有关如何执行此操作,请参阅Apple Tutorial

@IBAction func saveButtonPressed(_ sender: UIButton) {

}

接下来,在刚刚创建的这个函数中,您可以编写以下代码来使用这些值:

//Create three arrays for the three categories of values:
var fabrics: [String] = []
var fittings: [String] = []
var furniture: [String] = []

//Create indexPath for looping through cells in tableview:
var index = IndexPath(row: 0, section: 0)

//Loop through cells, collecting all values from text fields and adding them to the arrays:
for row in 0..<inputDataString.count {
    index = IndexPath(row: row, section: 0)

    fabrics.append((tableView.cellForRow(at: index) as! customCell1).cc1TextField1.text!)
    fittings.append((tableView.cellForRow(at: index) as! customCell1).cc1TextField2.text!)
    furniture.append((tableView.cellForRow(at: index) as! customCell1).cc1TextField3.text!)
}

现在您可以根据需要使用这些值。