Ich bin ein UITableViewController implementieren, die 3 Abschnitte unter den ersten beiden enthält 2 und 1 Textfeld haben. Ich habe Probleme beim Zugriff auf die Texteingabe im Textfeld. Ich habe keine Ahnung, wie man dieses Problem in iOS schnell beheben kann, bitte helfen Sie.Zugriff auf Text von UITextField in einem UITableViewCell
In Tabelle View-Controller
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let gender = Gender(rawValue: indexPath.row)
switch indexPath.section {
case 0:
guard let nameCell = tableView.dequeueReusableCellWithIdentifier("addNameCellID") as? ChildFormViewCell else {
return UITableViewCell()
}
nameCell.firstNameField.text = "" // just in case cells are re-used, this clears the old value
nameCell.firstNameField.tag = indexPath.row
return nameCell
case 1:
self.tableView.rowHeight = 50
guard let dateCell = tableView.dequeueReusableCellWithIdentifier("addDateCellID") as? ChildFormViewCell else {
return UITableViewCell()
}
return dateCell
case 2:
guard let genderCell = tableView.dequeueReusableCellWithIdentifier("addGenderCellID") as? ChildFormViewCell else {
return UITableViewCell()
}
genderCell.genderLabel.text = gender?.nameString()
return genderCell
default:
return UITableViewCell()
}
}
extension AddChildFormTVC: ChildFormViewCellDelegate {
func getFirstName(text: String?) {
print(text)
}
func getLastName(text: String?) {
print(text)
}
func getDateOfBirth(text: String?) {
print(text)
}
func getGender(text: String?) {
print(text)
}
}
class ChildFormViewCell: UITableViewCell {
@IBOutlet weak var firstNameField: UITextField!
@IBOutlet var lastNameField: UITextField!
@IBOutlet var dateField: UITextField!
@IBOutlet var genderLabel: UILabel!
var delegate: ChildFormViewCellDelegate!
}
extension ChildFormViewCell: UITextFieldDelegate {
func textFieldDidEndEditing(textField: UITextField) {
switch(textField) {
case self.firstNameField:
self.delegate.getFirstName(firstNameField.text)
case self.lastNameField:
self.delegate.getLastName(lastNameField.text)
case self.dateField:
self.delegate.getDateOfBirth(dateField.text)
case self.genderLabel:
self.delegate.getGender(genderLabel.text)
default:
return
}
}
}
protocol ChildFormViewCellDelegate {
func getFirstName(text: String?)
func getLastName(text: String?)
func getDateOfBirth(text: String?)
func getGender(text: String?)
}
Wen sagen Sie "Zugriff" auf den Text, meinst du bei der Zellgenerierung, oder meinst du außerhalb der UITableView Delegate-Methoden? d. h. auf ein bestimmtes textField in der UITableView verweisen, um dessen Text zu erhalten? –
Nein Ich möchte Text, wenn der Benutzer Text in das Textfeld eingibt. –
Meinst du, wenn der Benutzer Text eingibt, während er eine Taste drückt, erhalten Sie einen Rückruf, der eine Nachricht bei jedem Tastendruck sendet, z. das Eingeben von "Hallo" würde zu 5 Rückrufen führen, von denen jeder "h", "he", "hel", "hell", "hallo" oder kurz nachdem der Benutzer fertig ist, d.h. ein Rückruf mit dem vollen "Hallo"? –