Nano Hash - криптовалюты, майнинг, программирование

Пытался перейти к контроллеру представления, которого нет в SwiftUI

У меня странный сбой из-за довольно нормальной навигации в моем приложении SwiftUI

У меня простой вид вкладок:

struct FFTabView: View {
    var body: some View {
        TabView {
            LibraryView2()
        }
        .navigationBarBackButtonHidden(true)
        .navigationBarHidden(true)
        .navigationBarTitle("", displayMode: .inline)
    }
}

// MARK: -

struct LibraryView2: View {

    var body: some View {
        VStack {
            NavigationLink(destination: Foo()) {
                Text("go to foo")
            }
        }
        .tabItem {
            Image(systemName: "square.grid.2x2.fill")
            Text("Skill Library")
        }
    }

}

struct Foo: View {
    var body: some View {
        Text("foo view")
    }
}

Когда я возвращаюсь через панель навигации, с Foo вылетает: Tried to pop to a view controller that doesn't exist

Есть идеи, что здесь происходит? Я не могу найти ничего, связанного с этим, и SwiftUI решил опубликовать. Спасибо

06.11.2019

Ответы:


1

Хотя вы не указали, я предполагаю, что ваш FFTabView где-то завернут в NavigationView.

В конечном итоге ваша иерархия представлений выглядит как

NavigationView {
    TabView {
        NavigationLink {
            ...
        }
    }
}

Если вы реструктурируете свою иерархию представлений, чтобы она выглядела как

TabView {
    NavigationView {
        NavigationLink {
            ...
        }
    }
}

Аварии не происходит.

Изменить: я подтвердил, что это связано с регрессией / ошибкой, описанной в этом ответе, введено в Xcode 11.2. Ваш исходный код отлично работает в Xcode 11.1.

06.11.2019
  • Ах! Спасибо, Джон. Это как раз то, что я искал. Поскольку я занимаюсь прототипированием, я удалил представление входа в систему, поскольку никому еще не нужно входить в систему, что позволило мне обернуть внутренности LibraryView2 в NavigationView, который решил сбой 07.11.2019
  • Проблема с этим решением заключается в том, что для некоторых макетов приложений требуется иерархия вида сверху. У меня есть такое приложение, и переключение на более низкую иерархию нарушает анимацию дочерних навигационных представлений, не скрывая панель вкладок. У кого-нибудь есть идеи, как исправить эту ошибку сбоя БЕЗ фундаментального изменения структуры приложения? 28.01.2020
  • @eResourcesInc У меня такая же проблема, как и у вас. Вы нашли решение? Было бы здорово, ты можешь пометить меня, если ты ответишь 10.12.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..