SWIFTUI Математические операции внутри (некоторые View) - PullRequest
0 голосов
/ 07 апреля 2020

Я хотел бы задать вам вопрос об использовании математических операций внутри представления.

struct MyMenu: View {
    var cnt: Int = 0
    let colors: [Color] = [.red, .green, .blue]

    var body: some View {
        ForEach(colors, id: \.self) { color in
            Text(color.description)
                .padding()
                .background(color)

            cnt += 1
        }
    }
}

Это дает мне ошибку:

Тип '() 'не может соответствовать' View '; только типы struct / enum / class могут соответствовать протоколам

Я не понимаю, что не так с синтаксисом SWIFTUI? Почему простые математические операции нельзя использовать внутри some View .

Есть решение? Спасибо!

1 Ответ

1 голос
/ 07 апреля 2020

Вы не можете иметь «обычный» код внутри своего тела, поскольку SwiftUI ожидает, что у вас будет декларативный код для генерации пользовательского интерфейса.

Если вы хотите увеличить свое свойство cnt, вам нужно сделать это, например, внутри действия кнопки, например:

Button(action: {
    cnt += 1
}) {
    Text("Click me to perform any action")
}

Не забывайте, что ваш объект MyMenu является struct означает, что по умолчанию она неизменна. Вы не сможете обновить свойство cnt, если оно не обернуто оберткой @State или любым другим в зависимости от ваших потребностей:)

Надеюсь, это поможет! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...