Fehler "Extra argument in call"

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

  • Fehler "Extra argument in call"

    Hallo!

    Ich mache gerade meinen ersten Schritte in Swift, komme eigentlich von der Webentwicklung. Nun versuche ich eine Oberfläche zu entwickeln, die in diesem Zustand noch Fehlerfrei angezeigt wird:

    Quellcode

    1. import SwiftUI
    2. struct menu: View {
    3. @State private var finanzen_pushed: Bool = false
    4. @State private var fed_pushed: Bool = false
    5. @State private var haushaltshilfe_pushed: Bool = false
    6. @State private var veranstaltungen_pushed: Bool = false
    7. var body: some View {
    8. NavigationView {
    9. VStack {
    10. Image("FloriUndTabita")
    11. .clipShape(Circle())
    12. .overlay(Circle().stroke(Color.white, lineWidth: 5))
    13. .shadow(radius: 10)
    14. Button(action: {
    15. print("Finanzen")
    16. }, label: {
    17. Text("Finanzen")
    18. })
    19. .font(.largeTitle)
    20. .frame(minWidth: 0, maxWidth: .infinity)
    21. .foregroundColor(.white)
    22. .background(LinearGradient(gradient: Gradient(colors: [.orange, .yellow]), startPoint: .topLeading, endPoint: .bottomTrailing))
    23. .cornerRadius(10)
    24. Text("")
    25. Button(action: {
    26. print("FED")
    27. }, label: {
    28. Text("Familienentlastender Dienst")
    29. })
    30. .font(.largeTitle)
    31. .frame(minWidth: 0, maxWidth: .infinity)
    32. .foregroundColor(.white)
    33. .background(LinearGradient(gradient: Gradient(colors: [.orange, .yellow]), startPoint: .topLeading, endPoint: .bottomTrailing))
    34. .cornerRadius(10)
    35. Text("")
    36. Button(action: {
    37. print("Haushaltshilfe")
    38. }, label: {
    39. Text("Haushaltshilfe")
    40. })
    41. .font(.largeTitle)
    42. .frame(minWidth: 0, maxWidth: .infinity)
    43. .foregroundColor(.white)
    44. .background(LinearGradient(gradient: Gradient(colors: [.orange, .yellow]), startPoint: .topLeading, endPoint: .bottomTrailing))
    45. .cornerRadius(10)
    46. Text("")
    47. Button(action: {
    48. print("Veranstaltungen")
    49. }, label: {
    50. Text("Veranstaltungen")
    51. })
    52. .font(.largeTitle)
    53. .frame(minWidth: 0, maxWidth: .infinity)
    54. .foregroundColor(.white)
    55. .background(LinearGradient(gradient: Gradient(colors: [.orange, .yellow]), startPoint: .topLeading, endPoint: .bottomTrailing))
    56. .cornerRadius(10)
    57. Text("")
    58. Text("Kontaktdaten des Dienstes")
    59. }
    60. }
    61. }
    62. }
    Alles anzeigen


    Soweit so gut. Jetzt bin ich aber an dem Punkt, an dem ich sofort einen "Extra argument in call" Fehler bekomme, sobald ich versuche noch ein Element hinzuzufügen:

    Quellcode

    1. Text("Kontaktdaten des Dienstes")
    2. Text("Text lorem ipsum")
    Also eine zusätzliche Textzeile unten. Oder wenn ich versuche oben einen Link für den Button zu definieren:


    Quellcode

    1. NavigationLink(destination: menu(), isActive: self.$finanzen_pushed) {
    2. Text("")
    3. }
    4. Button(action: {
    5. print("Finanzen")
    6. }, label: {
    7. Text("Finanzen")
    8. })
    9. .font(.largeTitle)
    10. .frame(minWidth: 0, maxWidth: .infinity)
    11. .foregroundColor(.white)
    12. .background(LinearGradient(gradient: Gradient(colors: [.orange, .yellow]), startPoint: .topLeading, endPoint: .bottomTrailing))
    13. .cornerRadius(10)
    Alles anzeigen
    Es kann doch nicht sein, dass nur eine begrenzte Anzahl von Elementen angezeigt werden kann, oder doch?...

    Sorry, meine Google-Suche zu "extra argument in call" hat bisher leider nichts ergeben, was ich verstanden hätte! Bin gespannt auf eure Rückmeldungen.
  • flori-software schrieb:

    Es kann doch nicht sein, dass nur eine begrenzte Anzahl von Elementen angezeigt werden kann, oder doch?
    Jein. In SwiftUI kann ein View maximal zehn direkte Subviews haben. Das liegt daran, dass die Views von Function-Buildern gebaut werden und die nur mit bis zu zehn Argumenten definiert sind.
    Du kannst bei Dir aber schon mal vier Views einsparen, indem du den Abstand zwischen den Buttons nicht mit einer leeren Textzeile (Text("")) herstellst, sondern durch das dafür gedachte Padding (.padding(.bottom)) verwendest.

    Bei deinen Buttons bietet es sich auch an, mit ButtonStyle zu arbeiten.