Outlets in einer anderen Klasse Aufrufen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ich bin von Deiner Programmstruktur maximal verwirrt: Eigentlich würde ich die UILabels als Outlets des Controllers erwarten und nicht der einzelnen Zellen. Wenn Du dies aber machst, bräuchte der Controller m. E. eine Referenz auf die Zellen, über die Du dann an deren Outlets kommst.

    Oder habe ich wieder irgendein „neumodisches“ Konzept verpasst...?

    Rein formal noch: Was lässt Dich glauben, Screenshots seien das geeignete Mittel, Quelltext zu posten? Ich finde dies extrem nervig, wenn nicht sogar unhöflich den potentiellen Helfern gegenüber. Nutze doch bitte die Schaltfläche „Quellcode einfügen“ aus der Formatierungsleiste.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Sorry wegen den screenshots war mein erster Post wusste noch nicht wie es läuft :D
    Wollte meiner Tabelle verschiedene Cells Hinzufügen habe das jetzt so gelöst.

    Quellcode

    1. import UIKit
    2. class Hinzufu_genTableController: UITableViewController {
    3. @IBOutlet var HinzufügenItemsDerCells: UITableView!
    4. override func viewDidLoad() {
    5. super.viewDidLoad()
    6. HinzufügenItemsDerCells.delegate = self
    7. HinzufügenItemsDerCells.dataSource = self
    8. }
    9. func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    10. self.view.endEditing(true)
    11. return false
    12. }
    13. @IBAction func hinzufügenDerUserBarBattun(_ sender: UIBarButtonItem) {
    14. CoreDataManager.shared.addNewDeckelItem(bezahlt: <#T##Bool#>, name: <#T##String#>, mitglied: <#T##Bool#>, anzahl: <#T##Int#>, sonstiges: <#T##Double#>, endbetrag: <#T##Double#>)
    15. }
    16. // MARK: - Table view data source
    17. override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    18. if indexPath.section == 0 {
    19. return 120
    20. }else if indexPath.section == 1 {
    21. return 60
    22. }else if indexPath.section == 2 {
    23. return 60
    24. }else
    25. {
    26. return 80
    27. }
    28. }
    29. override func numberOfSections(in tableView: UITableView) -> Int {
    30. // #warning Incomplete implementation, return the number of sections
    31. return 4
    32. }
    33. //
    34. override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    35. CoreDataManager.shared.countHinzufügenTabelle(section: section)
    36. }
    37. override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    38. if indexPath.section == 0 {
    39. let hinzufügnCell1 = tableView.dequeueReusableCell(withIdentifier: "TabelleHinzufügenSektion1", for: indexPath) as! Hinzufu_genSektion1TableViewCell
    40. return hinzufügnCell1
    41. }else if indexPath.section == 1 {
    42. let hinzufügnCell2 = tableView.dequeueReusableCell(withIdentifier: "TabelleHinzufügenSektion2", for: indexPath) as! Hinzufu_genSektion2TableViewCell
    43. // configure the cell
    44. let preisItem = CoreDataManager.shared.getPreisItem(index: indexPath.row)
    45. hinzufügnCell2.nameDesProdukts.text = preisItem.bezeichnung
    46. return hinzufügnCell2
    47. }else if indexPath.section == 2 {
    48. let hinzufügnCell3 = tableView.dequeueReusableCell(withIdentifier: "TabelleHinzufügenSektion3", for: indexPath) as! Hinzufu_genSektion3TableViewCell
    49. return hinzufügnCell3
    50. }else
    51. {
    52. let hinzufügnCell4 = tableView.dequeueReusableCell(withIdentifier: "TabelleHinzufügenSektion4", for: indexPath) as! Hinzufu_genSektion4TableViewCell
    53. return hinzufügnCell4
    54. }
    55. }
    56. func checkUserInput(value:String?) -> String {
    57. if let input = value {
    58. return input
    59. }else {
    60. return "kein wert vorhanden"
    61. }
    62. }
    63. }
    Alles anzeigen
  • Auch wenn ich Deine Namensgebungen noch für etwas "mißdeutend" halte (warum hat eine UITableView ein Verb als Namensstamm):

    Ich persönlich finde es leichter wartbar, Details einer Benutzeroberfläche programmatisch zu lösen ... war das eine bewusste Entscheidung oder nur ein Vermeiden Deines ursprünglichen Problems? Wenn letzteres, würde ich - des Lernens willen - versuchen, das Ganze noch einmal per IB umzusetzen. Nur ein gut gemeinter Rat...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Fand das einfacher so zu machen und in dem Udemy Kurs den ich mir angeschaut habe wurde das so ähnlich gemacht. Aber wenn ich das Umständlich gemacht habe würde ich das gerne ändern. Muss ich dafür die ganze Tabelle neu machen und was meinst du mit IB ?

    Besten Dank.
    Alex
  • Es sind eben zwei unterschiedliche Möglichkeiten, Benutzeroberflächen entweder im Interface Builder aka IB in Xcode zu designen, oder die Elemente in Code zu erzeugen und zu "verdrahten". Da gibt es kein falsch oder richtig, und die meisten Entwickler, die ich kenne, nutzen eine Mischung aus beidem.

    Ich finde es angenehmer, komplexere Strukturen oder detaillierte Eigenschaften im Code zu machen, da ich dann leichter die Übersicht behalten kann: Bei x Objekten im IB mit diverse Häkchen wird es m. E. schnell unübersichtlich. Aber jeder Jeck ist anders.

    Meine Bemerkung bezog sich darauf, dass Du - zumindest scheinbar - nicht durchschaut hast, wie Objekte im IB über Outlets referenzierbar sind bzw. unter welchen Bedingungen. Da Du das bestimmt noch einmal brauchst, wäre jetzt vielleicht eine gute Gelegenheit zum Üben.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.