#swift #swiftui
#swift #swiftui
Вопрос:
Я пытаюсь передать данные в новое представление в моем приложении, чтобы мой скрипт мог подключить данные к ссылке и получить соответствующую информацию о статье. Мое представление вызывается с ArticleView(articleID: 0)
помощью, хотя это изменяется с идентификатором статьи. Начало моего представления начинается как таковое…
struct ArticleView: View {
var articleID: Int
@Envionment(.imageCache) var cache: ImageCache
@ObservedObject private var data = Result2()
let defaults = UserDefaults.standard
...
init() {
self.data.results.append(Story.init(id: 0, title: "test", image: "", story: "", published: "", author: ""))
self.loadArticle(CDNLink: "http://(self.defaults.object(forKey: "domain") as! String)/cdn?funct=fetchArticleamp;articleID=(self.articleID)")
}
Я пытаюсь понять, как мне сохранить идентификатор статьи из моей панели мониторинга в var articleId, чтобы моя функция loadArticle могла затем запустить скрипт и извлечь содержимое? Я могу предоставить информацию для Result2() вместе со структурами данных для Response2 и Story по запросу. Спасибо!
Комментарии:
1. Это должно быть
init(articleID: Int) {...
,2. Спасибо, это действительно помогло.
Ответ №1:
У вас есть 2 варианта:
- Чтобы запросить параметр у инициализатора:
struct ArticleView: View {
var articleID: Int
...
init(articleID: Int) {
self.articleID = articleID
// Do whatever you need
}
var body: some View {
SomeView()
}
}
- Опустите инициализатор и поместите все, что вам нужно, в
.onAppear
предложение
struct ArticleView: View {
var articleID: Int
...
var body: some View {
SomeView()
.onApppear {
// Do whatever you need
}
}
}
Во втором случае компилятор автоматически создаст инициализатор со всеми необходимыми значениями (в вашем случае — articleId)
Комментарии:
1. Спасибо, в итоге я использовал вариант 1, но я буду иметь в виду второй вариант! Спасибо!