Двойное касание требуется для перехода от просмотра сведений к представлению списка - PullRequest
0 голосов
/ 10 февраля 2020

В представлении списка отображается подробное сообщение.

NavigationView() {
        List(msgData) { msg in
            NavigationLink(destination: MessageDetailsView(msgDetails :msg )) {
                        VStack(alignment: .leading, spacing: 5)
                        {
                            Text(msg.name).font(.system(size: 16)).fontWeight(.semibold).foregroundColor(.black)

                        }
            }
        }
        .navigationBarTitle(Text("Messages").font(.headline), displayMode: .inline)
        .navigationBarHidden(false)
    }

Ниже приводится подробное описание сообщения

 VStack
    {

        List {

            ForEach(chatMsgArray, id: \.self) { chat in
                ChatRow(chatMessage: chat)
            }

        }
    }
    .navigationBarItems(leading:
    Button(action: {
    print("Back button pressed...")
    }) {
    } , trailing:Button(action: {
    print("Call button pressed...")
    }) {
    }  )

Мне нужно дважды нажать кнопку возврата, чтобы go Просмотр списка. Я получаю сообщение об ошибке при первом касании, и оно отображается в виде списка при втором касании.

[TableView] Только предупреждение один раз: UITableView было приказано расположить видимые ячейки и другое содержимое, не находясь в представлении. иерархия (табличное представление или одно из его суперпредставлений не было добавлено в окно). Это может привести к ошибкам, заставляя представления внутри табличного представления загружаться и выполнять компоновку без точной информации (например, границ табличного представления, сбора признаков, полей макета, вставок безопасной области и т. Д. c), а также приведет к ненужным потерям производительности из-за дополнительные макеты проходит. Создайте символьную c точку останова в UITableViewAlertForLayoutOutsideViewHierarchy, чтобы перехватить это в отладчике и посмотреть, что вызвало это, чтобы вы могли вообще избежать этого действия, если это возможно, или отложить его, пока представление таблицы не будет добавлено в окно. Представление таблицы: <_TtC7SwiftUIP33_BFB370BA5F1BADDC9D83021565761A4925UpdateCoalescingTableView: 0x107141800; baseClass = UITableView; кадр = (0 0; 375 667); clipsToBounds = YES; жестRecognizers =; слой =; contentOffset: {0, -64}; contentSize: {375, 483}; AdjustContentInset: {64, 0, 0, 0}; источник данных: <_TtGC7SwiftUIP10 $ 1c38d1a4819ListCoreCoordinatorGVS_20SystemListDataSourceOs5Never_GOS_19SelectionManagerBoxS2 ___: 0x106486780 >>

1 Ответ

0 голосов
/ 11 февраля 2020

Следующий код решает эту проблему

@ Environment (.presentationMode) var presentationMode: Binding

Затем в действии кнопки или чем-то еще отклоните представление: presentationMode.wrappedValue.dismiss ( )

...