Swiftui - Сбои навигацииSplitView в ландшафтном режиме на iPad (iOS 16.2)

Я работаю над приложением для iPhone и iPad и хочу использовать NavigationSplitView. При работе на iPad в альбомной ориентации я сталкиваюсь с сбоем iOS 16.2, который не могу понять.

В этом примере вы можете воспроизвести сбой на iPad в ландшафтном режиме следующим образом: сначала выберите «Джордж», а затем нажмите на его книгу «Большая книга» (последняя в списке для него). Затем выберите «Лука». Нажмите на его первую запись в книге («Скучная книга»). На этом этапе происходит сбой всего приложения. я получаю

Поток 1: EXC_BREAKPOINT (код =1, субкод =0x105c9fe94)

(конечно, точка останова не установлена).

Любая помощь будет принята с благодарностью!!

КБ

Это код (вы можете вставить его прямо в новый проект):

      
//
//  ContentView.swift
//  test
//


import SwiftUI

struct Member:Hashable, Identifiable {
var id: Int
var name: String
    
}

struct Book:Hashable, Identifiable {
var id: Int
var memberId: Int
var name: String
    
}

struct ContentView: View {
    
    @State private var memberID: Member.ID? // Single selection.
    @State private var bookID: Book.ID? // Single selection.
    @State private var columnVisibility = NavigationSplitViewVisibility.all
    
    
    
    var members = [
        Member(id:1, name:"George"),
        Member(id:2, name:"John"),
        Member(id:3, name:"Luca"),
    ]
    
    
    var books
    = [
        Book(id:1,memberId:1, name:"A good Book"),
        Book(id:2, memberId:1, name:"Another great Book"),
        Book(id:3, memberId: 1, name:"Very good Book"),
        Book(id:4,memberId:1, name:"Lame Book"),
        Book(id:5, memberId:1, name:"Big Book"),
        Book(id:6, memberId: 2, name:"Small Book"),
        Book(id:7,memberId:2, name:"Green Book"),
        Book(id:8, memberId:2, name:"Yellow Book"),
        Book(id:9, memberId: 3, name:"Boring Book"),
        Book(id:10, memberId: 3, name:"Best Book"),
    ]
    
    
    
    var body: some View {
        NavigationSplitView(columnVisibility: $columnVisibility) {
            List(members, selection: $memberID) { member in
                HStack{
                    Text("ID: \(member.id)")
                    Text("Name: \(member.name)")
                }
                
            } //List
            
        } content: {
            
            if memberID == nil {
                Text("select")
                
            } else {
                List(books.filter({ $0.memberId == memberID }), selection: $bookID) { book in
                    
                    
                    Text(book.name)
                    
                } //List
                
            } //else
            
            
        } detail: {
            
            Text("Details")
        }// detail
        .onChange(of: memberID){ _ in
            bookID = nil
        }
        
    } // body
    
    
    
    
}
 

Похоже, это как-то связано с тем, что список участника 1 длиннее, чем список участника 3. Значения элемента 3 в порядке, и их можно выбрать, если вы перейдете туда напрямую.

Я следовал документации разработчика и различным руководствам. Я искал SO, но не нашел этой конкретной проблемы. Я, наверное, что-то упускаю.

0 ответов

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