滚动列表时 SwiftUI 崩溃
SwiftUI Crash when scrolling a list
很高兴 post 我的第一个问题在这里!
我已经使用 SwiftUI 玩了几个星期了,在一个更大的项目中,我发现了以下错误。
如果您有一个 TabView 和其中的一个列表,如果您尝试在滚动动画发生时更改选项卡,应用程序将崩溃并显示 致命错误:"Thread 1: signal SIGABRT"。
控制台:
- BugTest[11830:362796] 前提条件失败:属性无法设置初始值:98
你遇到过这种情况吗?有什么方法可以在不将列表更改为 ForEach 的情况下解决此问题?
提前致谢!
代码:
import SwiftUI
struct ContentView: View {
var body: some View {
TabView {
list()
.tabItem {
Image(systemName: "doc")
.font(.system(size: 25))
}
Text("Testing the bug")
.tabItem {
Image(systemName: "list.dash")
.font(.system(size: 25))
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct list: View {
var body: some View {
List(0..<50){_ in
Text("test")
}
}
}
根据 ,错误发生是因为列表中的项目不符合 Identifiable
协议。
struct ContentView: View {
var body: some View {
TabView {
list()
.tabItem {
Image(systemName: "doc")
.font(.system(size: 25))
}
Text("Testing the bug")
.tabItem {
Image(systemName: "list.dash")
.font(.system(size: 25))
}
}
}
}
struct list: View {
var elements: [CustomInt] = []
init() {
for i in 0...1000{
elements.append(CustomInt(text:String(i)))
}
}
var body: some View {
List(elements){element in
Text(element.text)
}
}
}
struct CustomInt: Identifiable{
var id = UUID()
var text:String
}
这应该有效
struct ContentView: View {
var body: some View {
TabView {
VStack{
list()
.tabItem {
Image(systemName: "doc")
.font(.system(size: 25))
}
Text("Testing the bug")
.tabItem {
Image(systemName: "list.dash")
.font(.system(size: 25))
}
}
}
}}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}}
struct list: View {
var body: some View {
List(0..<50){_ in
Text("test")
}
}}
很高兴 post 我的第一个问题在这里!
我已经使用 SwiftUI 玩了几个星期了,在一个更大的项目中,我发现了以下错误。
如果您有一个 TabView 和其中的一个列表,如果您尝试在滚动动画发生时更改选项卡,应用程序将崩溃并显示 致命错误:"Thread 1: signal SIGABRT"。
控制台:
- BugTest[11830:362796] 前提条件失败:属性无法设置初始值:98
你遇到过这种情况吗?有什么方法可以在不将列表更改为 ForEach 的情况下解决此问题?
提前致谢!
代码:
import SwiftUI
struct ContentView: View {
var body: some View {
TabView {
list()
.tabItem {
Image(systemName: "doc")
.font(.system(size: 25))
}
Text("Testing the bug")
.tabItem {
Image(systemName: "list.dash")
.font(.system(size: 25))
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct list: View {
var body: some View {
List(0..<50){_ in
Text("test")
}
}
}
根据 Identifiable
协议。
struct ContentView: View {
var body: some View {
TabView {
list()
.tabItem {
Image(systemName: "doc")
.font(.system(size: 25))
}
Text("Testing the bug")
.tabItem {
Image(systemName: "list.dash")
.font(.system(size: 25))
}
}
}
}
struct list: View {
var elements: [CustomInt] = []
init() {
for i in 0...1000{
elements.append(CustomInt(text:String(i)))
}
}
var body: some View {
List(elements){element in
Text(element.text)
}
}
}
struct CustomInt: Identifiable{
var id = UUID()
var text:String
}
这应该有效
struct ContentView: View {
var body: some View {
TabView {
VStack{
list()
.tabItem {
Image(systemName: "doc")
.font(.system(size: 25))
}
Text("Testing the bug")
.tabItem {
Image(systemName: "list.dash")
.font(.system(size: 25))
}
}
}
}}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}}
struct list: View {
var body: some View {
List(0..<50){_ in
Text("test")
}
}}