Ich möchte UITextFiled.text in benutzerdefinierten UITableViewCell aktualisiert werden, wenn ich einen Wert aus UIPickerView auswählen.Wie update textfield.text Wert in benutzerdefinierten TableViewCell von UIPickerView
Wenn Sie auf das Bild schauen, tippen Sie auf UITextField in benutzerdefinierten UITableViewCell und UIPickerView erscheint. Dann wähle ich Nummer und Tab "Fertig". Aber ich weiß nicht, wie man den ausgewählten Wert von UIPickerView an mein benutzerdefiniertes UITableViewCell übergibt, wo ist mein UITextFiled.text.
Kann mir jemand helfen, bitte? Dank
Individuelle Handy
class JamkaTableViewCell: UITableViewCell, pickerChangedDelegate {
@IBOutlet weak var jmenoHraceLabel: UILabel!
@IBOutlet weak var parTextField: UITextField!
func onPickerChanged(val: String) {
self.parTextField.text = val
print(self.parTextField.text)
}
}
View Controller
import UIKit
protocol pickerChangedDelegate {
func onPickerChanged(val: String)
}
class JamkaViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
@IBOutlet weak var vzdalenostLabel: UILabel!
@IBOutlet weak var jmenoLabel: UILabel!
@IBOutlet weak var parJamkyLabel: UILabel!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var jamkaView: UIView!
var picker: UIPickerView!
var karta:Karta = Karta.init()
var index = 0
var vzdalenost:Int!
var jmenoJamky:String = ""
var parJamky:Int!
var pocetKopu:[String] = []
var hrac:Hrac!
var delegate: pickerChangedDelegate? = nil
override func viewDidLoad() {
super.viewDidLoad()
vzdalenostLabel.text = "\(self.vzdalenost)"
jmenoLabel.text = self.jmenoJamky
parJamkyLabel.text = "\(self.parJamky)"
//Vypocitat pocet kopu a trestných bodů
pocetKopu(self.parJamky)
//Jamka view
self.jamkaView.layer.cornerRadius = 5
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.karta.seznamHracu.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "Cell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! JamkaTableViewCell
self.hrac = self.karta.seznamHracu[indexPath.row]
//Vybiratko na pary
self.picker = UIPickerView.init()
self.picker.delegate = self
self.picker.dataSource = self
self.picker.backgroundColor = svetleSeda
let pickerToolbar = UIToolbar()
pickerToolbar.barStyle = .Default
pickerToolbar.sizeToFit()
pickerToolbar.tintColor = UIColor.blackColor()
let hotovoTlacitko = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(JamkaViewController.skrytPickerView))
pickerToolbar.setItems([hotovoTlacitko], animated: true)
pickerToolbar.userInteractionEnabled = true
cell.parTextField.inputView = self.picker
cell.parTextField.inputAccessoryView = pickerToolbar
cell.jmenoHraceLabel.text = self.hrac.jmeno
print(cell.parTextField.text)
return cell
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.pocetKopu.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return self.pocetKopu[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
delegate?.onPickerChanged(self.pocetKopu[row])
print("did select \(self.pocetKopu[row])")
}
func pocetKopu(parJamky: Int) -> [String] {
let maximalniPocetKopu = (3*parJamky)
for i in 1...maximalniPocetKopu {
let str = String(i)
self.pocetKopu.append(str)
}
//Trestne body
let trestneBody = String(4*parJamky)
self.pocetKopu.append(trestneBody)
return self.pocetKopu
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
let pointInTable:CGPoint = textField.superview!.convertPoint(textField.frame.origin, toView:self.tableView)
var contentOffset:CGPoint = self.tableView.contentOffset
contentOffset.y = pointInTable.y
if let accessoryView = textField.inputAccessoryView {
contentOffset.y -= accessoryView.frame.size.height
}
self.tableView.contentOffset = contentOffset
return true;
}
func textFieldDidEndEditing(textField: UITextField) {
self.tableView.setContentOffset(CGPointMake(0, 0), animated: true)
scrollView.setContentOffset(CGPointMake(0, 0), animated: true)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
func skrytPickerView() ->() {
self.view.endEditing(true)
}
}
Dank für die Beratung. Ich benutze benutzerdefinierte Zelle, aber ich bin ein Anfänger und ich verstehe nicht, "Sie können dies in der Zelle selbst und senden Daten mit einem Protokoll, um Controller von Ypur Tabelle anzeigen" können Sie mir bitte jeden Code, wie kann ich erreichen oder es mehr erklären? Vielen Dank –
@ MiroslavPurtík Ich aktualisiere den Code und wie Sie das Protokoll verwenden können, um Ihre Daten in Ihre Zelle zu bekommen. –
danke für die Antwort Ich habe alles nach Ihrem Code, aber delegieren? .onPickerChanged (self.pocetKopu [row]) wird nie ausführen :(Überprüfen Sie meinen Code oben bitte. Vielen Dank –