Basi c SwiftUI Pickers выдает критическое предупреждение и странные движения при смене экрана - PullRequest
0 голосов
/ 29 января 2020

У меня есть этот простой сборщик.

  1. Можете ли вы сказать мне, почему каждый раз, когда я меняю сборщик, происходит сбой приложения.

  2. Почему там странное движение, когда я go внутри сборщика. Он увеличивается примерно на 20 пикселей.

Код:

struct ContentView: View {
@State private var selection = true

var body: some View {
    NavigationView {
        Form {
            Section {
                Picker(selection: $selection, label:
                    Text("Picker Name")
                    , content: {
                        Text("Value 1").tag(0)
                        Text("Value 2").tag(1)
                        Text("Value 3").tag(2)
                        Text("Value 4").tag(3)
                })
            }
        }
    }
}

}

Это ошибка

2020-01-28 22:46:03.338431+0000 FlashCards[24878:4518391] [TableView] Warning once only: UITableView was told to layout its visible cells and other contents without being in the view hierarchy (the table view or one of its superviews has not been added to a window). This may cause bugs by forcing views inside the table view to load and perform layout without accurate information (e.g. table view bounds, trait collection, layout margins, safe area insets, etc), and will also cause unnecessary performance overhead due to extra layout passes. Make a symbolic breakpoint at UITableViewAlertForLayoutOutsideViewHierarchy to catch this in the debugger and see what caused this to occur, so you can avoid this action altogether if possible, or defer it until the table view has been added to a window. Table view: <_TtC7SwiftUIP33_BFB370BA5F1BADDC9D83021565761A4925UpdateCoalescingTableView: 0x7fb3b5046e00; baseClass = UITableView; frame = (0 0; 414 852); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x600000df6fa0>; layer = <CALayer: 0x600000307d20>; contentOffset: {0, -96}; contentSize: {414, 205.33333333333337}; adjustedContentInset: {96, 0, 83, 0}; dataSource: <_TtGC7SwiftUIP13$7fff2c69da4419ListCoreCoordinatorGVS_20SystemListDataSourceOs5Never_GOS_19SelectionManagerBoxS2___: 0x7fb3b45139a0>>

1 Ответ

2 голосов
/ 29 января 2020
  1. Ваша переменная выбора является Bool, если вы установите ее в значение true. Если вы измените его на Int, он сохранит текущий тег.

  2. Получает исправление, когда я устанавливаю .navigationViewStyle () для представления навигации. Недавно я получил отклонение бета-приложения из-за этого. Экран на iPad просто пустой, если оставить его в DefaultNavigationViewStyle ().

С этими двумя изменениями у меня не возникло проблем на устройстве, на симуляторе выбор выбора не открывается второй раз. Это может быть глюк.

    struct ContentView: View {
         @State private var selection: Int = 0

         var body: some View {
              NavigationView {
                  Form {
                      Section {
                          Picker(selection: $selection, label:
                          Text("Picker Name")
                          , content: {
                                 Text("Value 1").tag(0)
                                 Text("Value 2").tag(1)
                                 Text("Value 3").tag(2)
                                 Text("Value 4").tag(3)
                           })
                      }
                  }
              }.navigationViewStyle(StackNavigationViewStyle())
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...