2
votes

I have a restaurant menu app that is grouping menu items inside of sections of the menu with NavigationLinks on each menu item which are intended to display a more detailed description of the item. All the menu items in a section are being grouped together as if they were just a single link and triggering the error "Fatal error: UIKitNavigationBridge: multiple active destinations: file SwiftUI". In other words, it is trying to display the detail for all the items within that section when you click on any individual item.

I'm doing this with a section view that displays the various sections and in turn, each section displays the items within that section.

It appears to be a bug in SwiftUI, but since I'm relatively new to SwiftUI, I thought I'd seek more seasoned advice.

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

1 Answers

0
votes

Apparently the VStack in the above example was the cause of the error/bug. I eliminated it and now the links work correctly. It is still a bug since in a more complex iteration, the VStack is needed. I found the same thing happens with Buttons within stacks.