导航视图损坏

时间:2020-06-19 17:21:51

标签: list swiftui navigationview

我很确定这是SwiftUI中的错误,但是我想知道是否有人遇到过它并找到了解决方法。我的正常用例是显示一个搜索字段,但我已将其简化为一个简单的文本字符串就可以显示该错误的地方。

创建一个单视图应用程序,将其复制到ContentView中,然后运行它。点击搜索图标两次,然后滚动视图;您会看到标题下滚动的文本。

import SwiftUI

struct ContentView: View {
  private var items = (0 ... 50).map {String($0)}
  @State private var condition = false

  var searchButton: some View {
    Button(action: {self.condition.toggle()}) {
      Image(systemName: "magnifyingglass").imageScale(.large)
    }
  }

  var body: some View {
    NavigationView {
      VStack {
        if condition {
          Text("Peekaboo")
        }

        List {
          ForEach(items, id: \.self) {item in
            HStack {
              Text(item)
            }
          }
        }
      }
      .navigationBarTitle("List of Items")
      .navigationBarItems(leading: searchButton)
    }
  }
}

Title overlaps list items This is what the suggested solution looks like. Blank text view in else clause

2 个答案:

答案 0 :(得分:0)

也许这是一个错误,请向Apple提交反馈,但是目前NavigationView的行为-如果导航栏的主要内容是List/ScrollView/Form,它只会折叠导航栏 。因此,要解决此问题,请将VStack移至List或移出NavigationView

1)

  var body: some View {
    NavigationView {
        List {
          if condition {
             Text("Peekaboo")
          }
          ForEach(items, id: \.self) {item in

2)

    var body: some View {
        VStack {
         if condition {
            Text("Peekaboo")
         }
         NavigationView {
           List {

答案 1 :(得分:0)

一个View似乎无法应付可变数量的View。 解决此奇怪行为的方法是:

hello="hello"

def reverse(string):
  reversed_string=""
  for x in range(len(string)-1,-1,-1):
    reversed_string+=string[x]
  string=reversed_string

reverse(hello)

print (hello)

让我知道它是否有效,如果不行,请告诉我们您使用的设备/系统。已在Xcode 11.6 Beta,Mac 10.15.5,目标ios 13.5和Mac催化剂上进行了测试。