簡體   English   中英

從表格視圖單元格內的文本字段獲取文本

[英]Get Text from Text Field Inside Table View Cell

我的表格視圖中有幾行,每行都是包含一個UTextField的自定義單元類的實例。 我已經為每個標簽分配了一個標簽,但是我需要知道如何檢索每個文本字段的文本值並將這些值分配給適當的字符串。

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

        cell.selectionStyle = .None
        cell.textField.delegate = self

        if indexPath.section == 0 {
            cell.textField.keyboardType = .NumberPad

            switch indexPath.row {
            case 0:
                cell.textField.placeholder = "Card Number"
                cell.textField.tag = 0
            case 1:
                cell.textField.placeholder = "Security Code"
                cell.textField.tag = 1
            case 2:
                cell.textField.placeholder = "Expiration Month"
                cell.textField.tag = 2
            case 3:
                cell.textField.placeholder = "Expiration Year"
                cell.textField.tag = 3
            default:
                break
            }
        } else {
            switch indexPath.row {
            case 0:
                cell.textField.placeholder = "First Name"
                cell.textField.keyboardType = .Default
                cell.textField.tag = 4

                if let firstName = sharedUser.userJSON!["firstName"] {
                    cell.textField.text = firstName as? String
                }
            case 1:
                cell.textField.placeholder = "Last Name"
                cell.textField.keyboardType = .Default
                cell.textField.tag = 5

                if let lastName = sharedUser.userJSON!["lastName"] {
                    cell.textField.text = lastName as? String
                }
            case 2:
                cell.textField.placeholder = "Phone Number"
                cell.textField.keyboardType = .PhonePad
                cell.textField.tag = 6
            case 3:
                cell.textField.placeholder = "Address"
                cell.textField.keyboardType = .EmailAddress
                cell.textField.tag = 7
            case 4:
                cell.textField.placeholder = "City"
                cell.textField.keyboardType = .Default
                cell.textField.tag = 8
            case 5:
                cell.textField.placeholder = "State"
                cell.textField.keyboardType = .Default
                cell.textField.tag = 9
            case 6:
                cell.textField.placeholder = "Zip Code"
                cell.textField.keyboardType = .NumberPad
                cell.textField.tag = 10
            default:
                break
            }
        }

        return cell
    }

我可以做到,但似乎不是最佳選擇。

func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()

        switch textField.tag {
        case 0:
            self.cardNumber = textField.text!
        case 1:
            self.securityCode = textField.text!
        case 2:
            self.expMonth = textField.text!
        case 3:
            self.expYear = textField.text!
        case 4:
            self.firstName = textField.text!
        case 5:
            self.lastName = textField.text!
        case 6:
            self.phoneNumber = textField.text!
        case 7:
            self.address = textField.text!
        case 8:
            self.city = textField.text!
        case 9:
            self.state = textField.text!
        case 10:
            self.zipCode = textField.text!
        default:
            break
        }

        return true
    }

您可以像這樣簡單地創建一個占位符數組

let placeholders = ["Card Number", "Security Name", ...]

然后,您可以使用不那么多余的代碼

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

    cell.selectionStyle = .None
    cell.textField.delegate = self
    let index = indexPath.row + indexPath.section*6 //calculates the index of the text in the array
    cell.textField.placeholder = placeholders[index]
    cell.textField.tag = index

    if indexPath.section == 0 {
        cell.textField.keyboardType = .NumberPad
    } else {
        if indexPath.row == 0 {
            if let firstName = sharedUser.userJSON!["firstName"] {
                cell.textField.text = firstName as? String
            }
        } else if indexPath.row == 1 {
            if let lastName = sharedUser.userJSON!["lastName"] {
                cell.textField.text = lastName as? String
            }
        }
    }
    return cell
}

您可以對變量執行相同的操作,將其放入數組中,然后說

variable[textField.tag] = textField.text!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM