Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
ToolbarContent: add a .disabled(Bool) method

I've created a custom ToolbarContent for common buttons, such as Save, Edit, Cancel, etc...

For example:


import SwiftUI

public struct SaveToolbarItem: ToolbarContent {
    private let placement: ToolbarItemPlacement
    private let action: () -> Void

    public init(placement: ToolbarItemPlacement = .confirmationAction,
                action: @escaping () -> Void = {}) {
        self.placement = placement
        self.action = action
    }

    public var body: some ToolbarContent {
        ToolbarItem(placement: placement) {
            Button(
                "Save"
            ) {
                action()
            }
        }
    }
}

At call site:

        .toolbar {            
            SaveToolbarItem() {
                 // some code for the Action
                presentationMode.wrappedValue.dismiss()
            }
            .disabled(true) // Value of type 'SaveToolbarItem' has no member 'disabled'
        }

However, I'm getting the following error while trying to use isDisabled method:

Value of type 'SaveToolbarItem' has no member 'disabled'

How can I mitigate this error? E.g. maybe define disabled only on my custom types of ToolbarContent?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

You need to place it inside, like

public var body: some ToolbarContent {
    ToolbarItem(placement: placement) {
        Button(
            "Save"
        ) {
            action()
        }
        .disabled(true)     // << here !!
    }
}

*of course parameter for disabled is expected to be passed in.

Updated: Here is possible approach with built-in disabled modifier.

Tested with Xcode 13.2 / iOS 15.2

demo

public struct SaveToolbarItem: ToolbarContent {
    private let placement: ToolbarItemPlacement
    private let action: () -> Void

    private var enabled = true

    public init(placement: ToolbarItemPlacement = .confirmationAction,
                action: @escaping () -> Void = {}) {
        self.placement = placement
        self.action = action
    }

    public var body: some ToolbarContent {
        ToolbarItem(placement: placement) {
            Button(
                "Save"
            ) {
                action()
            }
            .disabled(!enabled)
        }
    }

    func disabled(_ flag: Bool) -> Self {
        var newItem = self
        newItem.enabled = !flag
        return newItem
    }
}
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda