SwiftUI Preview: предварительный просмотр завершился неудачно, если Custom ButtonStyle находится в другом файле - PullRequest
0 голосов
/ 19 июня 2020

Мой собственный стиль кнопок выглядит так.

struct DefaultButtonStyle: ButtonStyle {
    func makeBody(configuration: Configuration) -> some View {
        configuration.label
            .padding()
            .frame(minWidth: 0, maxWidth: .infinity)
            .foregroundColor(.white)
            .background(RoundedRectangle(cornerRadius: 4)
                .fill(configuration.isPressed ? Color.black : Color.green)
            )
    }
}

Пример реализации использования настраиваемого стиля кнопки.

Button(action: { self.viewModel.login() }) {
  Text("Sign In")
    .font(.headline)
}
.buttonStyle(DefaultButtonStyle())
.frame(minWidth: 0, maxWidth: 380)
.padding([.leading, .trailing], 27.5)

Мой код предварительного просмотра.

#if DEBUG
struct LoginView_Previews: PreviewProvider {
    static var previews: some View {
        LoginView (viewModel: LoginViewModel()).environment(\.verticalSizeClass, .regular)
    }
}
#endif

Когда Я поместил пользовательский стиль в тот же файл, что и представление. Предварительный просмотр в порядке. Но когда я переместил пользовательский стиль в его собственный файл (с целью его повторного использования во всем приложении). Предварительный просмотр выдает ошибку.

Compiling failed: type 'Any' has no member 'leading'

Нужно ли мне что-то добавлять в LoginView_Previews, чтобы оно загружалось в предварительном просмотре? Что я делаю не так?

1 Ответ

0 голосов
/ 19 июня 2020

Полагаю, это из-за конфликта со встроенным DefaultButtonStyle, поэтому назовите свое как-нибудь иначе, например,

struct MyDefaultButtonStyle: ButtonStyle {
    func makeBody(configuration: Configuration) -> some View {
    // .. other code

...

Button(action: { self.viewModel.login() }) {
  Text("Sign In")
    .font(.headline)
}
.buttonStyle(MyDefaultButtonStyle())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...