Ich habe ersten View-Controller (FirstView Controller), auf denen zwei TextFields und ein TableView, die TableViewCell mit Label enthalten. Und ich habe einen zweiten View-Controller (TypeViewController), der auch TableView mit TableViewCell enthält, die ein Label enthalten.Ändern Sie den Text des Labels auf TableViewCell
Auf FirstViewController wählen TableViewCell mit Text wählen -> gehen auf Sicht TypeViewController
Auf TypeViewController TableViewCell wählen (auf TypeViewController i Liste von Zellen haben, dass die Belastung dynamisch) -> zu FirstViewController zurück und anstelle von Text Wählen Sie, um den Text anzuzeigen, der auf TypeViewController ausgewählt wurde.
Wie kann ich den Text des Labels auf TableViewCell auf dem FirstViewController zu Text aus dem TypeViewController ändern? Controller-
First View
import UIKit
class FirstViewController: UIViewController, UITextFieldDelegate, UITableViewDataSource, UITableViewDelegate {
var animalTypeName: String?;
var selectedTypeId: UInt?;
var selectedTypeName: String?;
override func viewDidLoad() {
super.viewDidLoad();
}
// MARK: TableView && TableViewCell Methods
// Row display.
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! FirstTableViewCell;
animalTypeName = "Choose";
cell.typeName.text = animalTypeName;
return cell;
}
//MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
switch(segue.identifier ?? "") {
case "ShowType":
guard segue.destination is TypeViewController else {
fatalError("Unexpected destination: \(segue.destination)");
}
default:
fatalError("Unexpected Segue Identifier; \(String(describing: segue.identifier))");
}
}
//MARK: Actions
@IBAction func unwindToCreateMedicamentController(sender: UIStoryboardSegue) {
if let typeViewController = sender.source as? TypeViewController, let type = typeViewController.type {
selectedTypeName = type.name;
selectedTypeId = type.animalTypeId;
animalTypeName = selectedTypeName;
}
}
}
TypeViewController
import UIKit
class TypeViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var typeList: [AnimalType]?;
var type: AnimalType?;
let typeController = AnimalTypeController();
override func viewDidLoad() {
super.viewDidLoad();
// Call method to get array of AnimalType items.
getArrayOfTypeItems();
}
//MARK: - Table view data source
func numberOfSections(in tableView: UITableView) -> Int {
return 1;
}
// Row display.
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return typeList?.count ?? 0;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Table view cells are reused and should be dequeued using a cell identifier.
let cellIdentifier = "TypeTVCell";
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? TypeTableViewCell else {
fatalError("The dequeued cell is not an instance of TypeTVCell.");
}
let typeItem = typeList?[indexPath.row];
cell.nameOfType.text = typeItem!.name;
return cell;
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
switch(segue.identifier ?? "") {
case "ChooseType":
guard segue.destination is CreateMedicamentController else {
fatalError("Unexpected destination: \(segue.destination)");
}
guard let selectedTypeCell = sender as? TypeTableViewCell else {
fatalError("Unexpected sender: \(String(describing: sender))");
}
guard let indexPath = tableView.indexPath(for: selectedTypeCell) else {
fatalError("The selected cell is not being displayed by the table");
}
let selectedType = typeList?[indexPath.row];
type = selectedType;
default:
fatalError("Unexpected Segue Identifier; \(String(describing: segue.identifier))")
}
}
}
Sie delegieren einstellen müssen. –
Dies muss eine der häufigsten iOS-Fragen zu SO sein. https://medium.com/@jamesrochabrun/implementing-delegates-in-swift-step-by-step-d3211cbac3ef – toddg