Навигационные ссылки группируются - PullRequest
2 голосов
/ 13 июля 2020

У меня есть приложение меню ресторана, которое группирует пункты меню внутри разделов меню с помощью NavigationLinks для каждого пункта меню, которые предназначены для отображения более подробного описания пункта. Все элементы меню в разделе сгруппированы вместе, как если бы они были одной ссылкой, что вызывает ошибку «Неустранимая ошибка: UIKitNavigationBridge: несколько активных пунктов назначения: файл SwiftUI». Другими словами, он пытается отобразить детали для всех элементов в этом разделе, когда вы щелкаете по любому отдельному элементу.

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

Кажется, это ошибка в SwiftUI, но поскольку я относительно новичок в SwiftUI, я подумал, что попрошу более опытный совет.

import SwiftUI

struct MenuSectionView: View
{
    @Environment(\.managedObjectContext) var managedObjectContext
    @EnvironmentObject var env: GlobalEnvironment
    
    var group: Group
    var items: [MenuItem]
    
    init(group: Group)
    {
        self.group = group
        items = getMenuItems(businessid: group.businessid!, groupid: group.groupid)
    }
    
    var body: some View
    {
        VStack
        {
            ForEach (items, id: \.itemid)
            {
                itemx in
                if group.groupid == itemx.groupid
                {
                    MenuItemView(item: itemx)
                }
            }
        }
    }
}
import SwiftUI
import CoreData

struct MenuItemView: View
{
    @Environment(\.managedObjectContext) var context
    @EnvironmentObject var env: GlobalEnvironment
    
    var item: MenuItem  
    
    init(item: MenuItem)
    {
        self.item = item
    }
    
    var body: some View
    {
        return VStack
        {
            
                NavigationLink(destination: DetailView(item: item))
                {
                    VStack
                    {
                        HStack
                        {
                            if let image = item.image
                            {
                                Image(uiImage: UIImage(data: image)!).resizable().frame(width: 40, height: 40).cornerRadius(5)
                            } else
                            {
                                Image(item.name!).resizable().frame(width: 40, height: 40).cornerRadius(5)
                            }
                                Text(item.name!)
                        }
                        Text(item.desc!)
                    }
                }
             }
        }
    }
}

1 Ответ

0 голосов
/ 30 июля 2020

Очевидно, VStack в приведенном выше примере был причиной ошибки / бага. Устранил и теперь ссылки работают правильно. Это все еще ошибка, поскольку в более сложной итерации требуется VStack. Я обнаружил, что то же самое происходит с кнопками внутри стека.

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