Тип SwiftUI «Color» не имеет элемента «красный». swiftui не перезагружается при обновлении данных в объекте @published

У меня есть существующий проект с iOS10 и далее, я обновился до iOS13 и использую представления SwiftUI, это представление swiftUI загружается с помощью UIHostingController

let vc = UIHostingController(rootView: HomeView(viewModel: HelloViewModel()))
        self.navigationController?.pushViewController(vc, animated: true)

Моя модель просмотра имеет @Published public var sampData = ["Ramu","somu","Beemu","Kaamu"], и, на мой взгляд, она использовалась. Первое: просмотр не перезагружается, пока данные обновляются, либо добавляются новые элементы, либо удаляются существующие. и имеет странную ошибку, например "Тип" Цвет "не имеет элемента" красный "", я не знаю, что вызывает проблему.

struct AllergiesView: View {
    @ObservedObject var viewModel : HelloViewModel
    var body: some View {
        ZStack {
            Color.red
            ScrollView {
                ForEach(viewModel.sampData , id : \.self) { data in
                    NavigationLink(
                        destination: Text("Hello")){
                        Text(data)
                    }
                }
            }
        }
        .onAppear(){
        }
        .navigationBarTitle("Users")
    }
}

и моя инициализация модели просмотра выглядит так

init() {
        var runCount = 0

        Timer.scheduledTimer(withTimeInterval: 2.0, repeats: true) { timer in
            
            DispatchQueue.main.async {
                self.sampData.append("\(runCount)")
            }
            print(self.sampData)
            runCount += 1

            if runCount == 5 {
                timer.invalidate()
            }
        }
    }

Возможно, Color - это тип, который вы определили в другом месте, и SwiftUI делает вывод об этом вместо типа Color SwiftUI? Если это так, вы можете устранить неоднозначность, изменив Color на SwiftUI.Color

Aswath 31.03.2021 09:34

Что вы пытаетесь раскрасить красным? Обычно вы помещаете цвет в качестве модификатора на что-то, поэтому в этом случае, если вы пытаетесь раскрасить свой ZStack, вы помещаете его после закрывающей скобки ZStack

rlong405 31.03.2021 10:12

главное, чтобы UI не перезагружался

Prathap 31.03.2021 10:49

Добро пожаловать в SO - пожалуйста, возьмите тур и прочтите Как спросить, чтобы улучшить, отредактировать и отформатировать свои вопросы. Без Минимальный воспроизводимый пример невозможно помочь вам в устранении неполадок.

lorem ipsum 31.03.2021 10:54

@ rlong405 Color соответствует View в SwiftUI, поэтому его можно использовать, как показано.

Paulw11 31.03.2021 12:33

@Prathap Я просто загрузил ваш код в новое приложение SwiftUI, и оно сработало без каких-либо проблем. Одна вещь, которую я бы сделал, - это установить точку останова или добавить print в вашу модель представления init. Если вы создадите модель представления в неправильном месте в иерархии представлений, вы можете столкнуться с ситуацией, когда новые модели представления постоянно создаются в качестве представления. воссоздана иерархия,

Paulw11 31.03.2021 12:43

Да, для нового проекта он работает нормально, но это новый экран в существующем проекте (xib), элементы добавляются в массив нормально, но пользовательский интерфейс не обновляется

Prathap 31.03.2021 12:58

Можете ли вы добавить еще код? А минимальный воспроизводимый пример? Как HelloViewModel связан с AllergiesViewModel?

Paulw11 31.03.2021 15:19

@ Paulw11 это та же модель представления, и я передал эту модель представления в качестве параметра конструктора. Если я создаю новый проект, он работает нормально, тот же код не работает в существующем проекте.

Prathap 31.03.2021 15:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
47
0

Другие вопросы по теме