Как изменить значение переменной во время навигационной ссылки в Swift? - PullRequest
0 голосов
/ 20 апреля 2020

Как изменить значение переменной во время навигационной ссылки?

У меня есть переменная, определенная как

@State var numberChange: Int

, и я хочу изменить ее, когда пользователь нажимает кнопка, даже если к ней прикреплена навигационная ссылка, с

NavigationLink(destination: destinationView(numberChange: self.numberChange)) {
                            imageLink(imageName: "imageName")
                            }.buttonStyle(PlainButtonStyle())

Если я попытаюсь

destinationView(numberChange: self.numberChange = 4)

Xcode throws

Невозможно преобразовать значение типа '()' к ожидаемому типу аргумента 'Int?'

Я программировал всего несколько месяцев, и я работал в Swift меньше недели, поэтому Извините, если это базовый c вопрос.

Заранее спасибо

Миль

1 Ответ

0 голосов
/ 20 апреля 2020

Прежде всего вы должны передать в функцию целое число (вместо операции):

destinationView(numberChange: self.numberChange)

или

destinationView(numberChange: 4)

Это является причиной ошибки.


Во-вторых, вы должны НЕ изменить свойство State из-за пределов представления. Одной из хороших практик в этом отношении является объявление всех State свойств как private var.


В-третьих, вы можете использовать .onAppear():

.onAppear {
   self.text = "Goodbye world"
}

Он будет вызываться всякий раз, когда должно появиться представление. Вы можете передать значение следующему представлению, если вам нужно, и помните, вы можете использовать механизм binding для изменения пользовательского интерфейса при каждом изменении значения (вместо ожидания навигации)

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