标签: swiftui-list

从列表中删除顶部填充

我在 Stack Overflow 上看到过类似的问题,但没有一个能够回答我的问题。

我已经创建了一个List,但我想删除 中内容上方的填充空间(用红色箭头标记)List。使用时如何删除它GroupedListStyle

截屏

这是通过以下方式显示的ainainaList中的ainaina :VStackNavigationViewfullscreenCover

var body: some View {
  NavigationView {
    VStack {
      taskEventPicker
      myList
    }
    .navigationBarTitle("Add Task", displayMode: .inline)
  }
}
Run Code Online (Sandbox Code Playgroud)

其中taskEventPicker是分段Picker(绿色框内):

var taskEventPicker: some View {
  Picker("Mode", selection: $selection) { /* ... */ }
  .pickerStyle(SegmentedPickerStyle())
  .padding()
}
Run Code Online (Sandbox Code Playgroud)

myList有问题的表格(黄色框内):

var myList: some View {
  List { /* ... */ }
  .listStyle(GroupedListStyle())
}
Run Code Online (Sandbox Code Playgroud)

我尝试过的

swiftui swiftui-list

34
推荐指数
4
解决办法
3万
查看次数

iOS 16 SwiftUI 列表背景

SwiftUI随着iOS 16 的新更新List,不再依赖UITableView. 因此,我们用来设置List背景颜色的以下代码片段.clear现在毫无用处:

UITableView.appearance().backgroundColor = .clear
Run Code Online (Sandbox Code Playgroud)

我看到有人曾经introspect解决过这个问题,但是有人知道另一种可能更干净的方法来实现相同的行为吗?

另请注意,在 上macOS,以下工作正常(使用Xcode 14 beta&测试macOS Ventura):

extension NSTableView {
    open override func viewDidMoveToWindow() {
        super.viewDidMoveToWindow()
        backgroundColor = NSColor.clear
        enclosingScrollView!.drawsBackground = false
    }
}
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-list ios16

29
推荐指数
4
解决办法
2万
查看次数

SwiftUI 部分标题 - 使用非大写?

创建一个列表如下:

struct ContentView: View {
    var body: some View {
        List {
            Section(header: Text("Header")) {
                Text("Row 1")
                Text("Row 2")
            }
        }
        .listStyle(PlainListStyle())
    }
}
Run Code Online (Sandbox Code Playgroud)

在节标题中使用大写文本。

在此处输入图片说明

有没有办法强制标题文本保留其原始大小写?

swiftui swiftui-list ios14

27
推荐指数
3
解决办法
4545
查看次数

SwiftUI iOS14 - NavigationView + List - 不会填充空间

自 iOS 14 更新以来,我遇到了 NavigationView 中的 List 问题。

这是代码的简单细分 - 我已经将所有未显示问题的内容都进行了条带化

struct ContentView: View {
    
    var views = ["Line 1", "Line 2", "Line 3"]
    
    var body: some View {
        
        NavigationView {
            
            VStack {
                
                List {
                    
                    ForEach(views, id: \.self) { view in
                       
                        VStack {
                        Text("\(view)")
                        }
                        .background(Color.red)
                        
                    }
                    
                }
                
            }
            
        }
        
    }
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下结果:

导航视图中的列表

我无法弄清楚为什么列表会像那样悬停在导航视图的中心。据我所知,这应该会生成一个占据所有可用空间的列表视图(导航栏所在的顶部除外)。

事实上,当在 iOS 13.5 上运行时,我得到的结果如下图所示:

在导航视图 2 中列出

我已经通读了文档,但无法弄清楚为什么会突然发生这种行为。

任何帮助将不胜感激。

谢谢

swift swiftui swiftui-list ios14 swiftui-navigationview

26
推荐指数
1
解决办法
3595
查看次数

swiftui 列表部分中的圆角

这是 iOS 13 Health 应用程序的屏幕截图 - 用户个人资料。我最近开始使用并想知道如何开发如下所示的屏幕。我尝试了简单和分组的列表样式。但我无法看到下面的布局。

这样的 UI 可以纯粹使用吗?

我特别在寻找圆形部分并在列表中包含一个图像。 iOS 13 健康应用 - 用户资料

ios13 swiftui swiftui-list

23
推荐指数
3
解决办法
8358
查看次数

如何使用 iOS16 删除 SwiftUI Plain List 中的节标题顶部填充

当我们使用 SwiftUI List 组件并需要一个节标题时,顶部填充将出现在每个节的标题上。

iOS15下,我们用它UITableView.appearance().sectionHeaderTopPadding = 0来解决这个问题。查看附件iOS15&Xcode14构建截图。

但在iOS16中,这个设置似乎不起作用。查看附件iOS16&Xcode14构建截图,滚动时:iOS16&Xcode14构建滚动

所以,我的问题是如何在iOS16中删除节标题顶部填充,并且当滚动列表时,其节标题将被固定,就像附件iOS15&Xcode14构建滚动一样。

从iOS16开始,SwiftUI List组件似乎使用UICollectionView而不是UITableView,所以我尝试通过全局设置UICollectionView的section top padding来解决这个问题。不幸的是,我没有找到设置 UICollectionView 的部分顶部填充的方法。

我的代码如下。

//
//  ContentView.swift
//  ListIniOS16
//
//  Created by Eric on 2022/07/23.
//

import SwiftUI

struct ContentView: View {
    @State private var collections: [ListData] = ListData.collection

    init() {
        let appBarTheme = UINavigationBarAppearance()
        appBarTheme.configureWithOpaqueBackground()
        appBarTheme.backgroundColor = UIColor(.gray)
        UINavigationBar.appearance().standardAppearance = appBarTheme
        UINavigationBar.appearance().scrollEdgeAppearance = appBarTheme
        if #available(iOS 15.0, *) {
            // can fix sectionHeaderTopPadding issue in iOS15, …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-list ios16 xcode14

21
推荐指数
1
解决办法
5467
查看次数

SwiftUI 在 ScrollView 中自动滚动到底部(从底部开始)

我的问题是我(在 SwiftUI 中)有一个 ScrollView,里面有一个 foreach。知道 foreach 何时加载我的所有条目,我希望最后一个条目得到关注。

我做了一些谷歌研究,但我没有找到任何答案。

  ScrollView {
    VStack {
      ForEach (0..<self.entries.count) { index in
        Group {
          Text(self.entries[index].getName())
        }
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

foreach scroll scrollview swiftui swiftui-list

20
推荐指数
5
解决办法
1万
查看次数

无法在 SwiftUI 中两次选择同一行

我有一个包含多个部分和行的导航列表。我选择一行 foo,它导航到我想要的视图。但是,当我返回根视图时,无法选择行 foo。我点击行 foo 并没有任何反应。

我点击行栏,该行将我发送到它的视图。回到根视图。然后我无法选择行栏,但现在行 foo 有效。

这是 SwiftUI 中的错误还是设计行为?当我离开视图时,我需要做些什么来重置视图?

NavigationView {
            List {
Section(header: shoppingListData.lastItemSection.sectionHeader, footer: shoppingListData.lastItemSection.sectionFooter) {
            ForEach(0..<shoppingListData.lastItemSection.sectionRows.count) { index in
                ShoppingItemRow(shoppingListData: self.shoppingListData,
                                rowItem: self.shoppingListData.lastItemSection.sectionRows[index])
            }
        }
}
}
Run Code Online (Sandbox Code Playgroud)

这是另一个具有相同问题的案例。我只能选择表单的选择器行一次。如果我回到根视图,然后又回到这个视图,我可以再次选择选择器。

如果我将pickerStyle 设置为SegmentedPickerStyle(),我可以多次选择它。

struct ShoppingItemPage: View {
    @ObservedObject var shoppingListData: ShoppingListData
    @ObservedObject var shoppingItem: ShoppingItems
    var body: some View {
        Form {
            Section(header: Text("Packages")) {
                HStack {
                    Text("Quantity (\(shoppingItem.myUnit.myName))")

                    TextField("Quantity (\(shoppingItem.myUnit.myName))", value: $shoppingItem.stdQty, formatter: basicFormat)
                        .textFieldStyle(RoundedBorderTextFieldStyle())
                        .keyboardType(.numbersAndPunctuation)

                    Toggle("Need", isOn: $shoppingItem.needed)
                }
                HStack {
                    Text("Item Name")
                    TextField("Item Name", text: …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-list

20
推荐指数
1
解决办法
1234
查看次数

SwiftUI [演示] / 尝试在已经演示的...上演示视图

我正在开发一个 SwiftUI 应用程序,首先出现警告,然后出现错误,可能是因为我忽略了这些警告。我想展示我收到的警告,希望有人能指出我可能做错的事情。

这是相关代码:

struct CustomListView: View {
    var localList:[SomeManagedObject], moc:NSManagedObjectContext
    @State var showingOtherView = false
    
    func handleCustomItem(_ argument: SomeManagedObject) {
        print(#function)
        self.showingOtherView.toggle()
        ..... Do useful things .....
    }
    
    var body: some View {
        List {
            ForEach(self.localList) {
                item in
                HStack {
                    Spacer()
                    Button(action: {
                        self.handleCustomItem(item)
                    })
                    {
                        Text(item.expression!)
                            .foregroundColor(Color.red))
                            .font(.headline)
                            .padding(.horizontal, 11).padding(.vertical, 15)
                    }.sheet(isPresented: $showingOtherView) {
                        OtherView()
                    }
                    Spacer()
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是OtherView的代码:

import SwiftUI
import CoreData

struct OtherView: View {

    var body: some View {
        Text("Hello …
Run Code Online (Sandbox Code Playgroud)

xcode ios swiftui swiftui-list

20
推荐指数
2
解决办法
9660
查看次数

为什么有些视图在小部件中显示为红色的禁止进入标志?

我在 xcode 12 中创建了一个项目并添加了一个小部件扩展目标。目标已创建,我只剩下一个显示时间的简单小部件。小部件的预览按预期工作,小部件在模拟器中按预期显示。但是,如果我将视图更改为使用List而不是Text,如下所示:

struct SimpleWidgetEntryView : View {
    var entry: Provider.Entry

    var body: some View {
        List {
            Text("Something")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

预览和模拟器都在黄色背景上显示红色禁止进入标志:

xcode 12 预览中显示的禁止进入标志

我试过把List里面 aVStack和使用动态列表没有任何成功。我找不到任何关于List在小部件中被禁止的文档。我试过重新启动 xcode 和模拟器,清理和重建。我正在使用 xcode 12.0 beta 3。

~我UIView在尝试使用包装在UIViewRepresentable. 该视图LineChartView来自 Charts 库。~ 编辑:根据Apple 开发者论坛上的这篇文章,不可能在 WidgetKit 小部件中使用 UIKit 视图。

有谁知道我如何List在小部件中使用 a ?非常感谢任何帮助。谢谢

ios swift widgetkit swiftui swiftui-list

18
推荐指数
2
解决办法
1412
查看次数