问题复现
在学习Picker选择器时,发现以下报错:
Argument passed to call that takes no arguments
Remove '("Pick a number", selection: $selectedNumber) {
ForEach(1..<101) { number in
Text("\(number)")
}
}'
报错代码:
import SwiftUI
struct Picker: View {
@State private var selectedNumber = 1
var body: some View {
Picker("Pick a number", selection: $selectedNumber) {
ForEach(1..<101) { number in
Text("\(number)")
}
}
.pickerStyle(WheelPickerStyle())
}
}
#Preview {
Picker()
}
经排查发现,问题为SwiftUI视图结构存在命名冲突,即定义的struct Picker与Swift UI自带的Picker控件同名,导致Swift认为我在调取Picker结构,而不是Swift的Picker组件。
解决方案
修改Picker机构的名称,改为SomePicker。
大佬,我做了80个swiftUI文件,不知道点到哪里了,所有的按钮、标签、颜色选择器、日期选择器等全部在新文件里面添加都报错,而且之前的80个文件全体报错。新建项目也不行、重启电脑也不行、更新系统更新Xcode也不行…….
1、问题描述:报错应该是新添加的文件代码有问题,在同一个项目中,一个文件报错,所有文件都无法正常预览或编译。因此,重启电脑和更新系统都是无法解决这一问题的,问题的根源在于项目文件的某一处代码。
2、排查方案:需要排查项目中哪个代码出问题了。比较好的方式是排查大法,先从最近做的文件开始,把文件中的所有的代码注释掉,然后按 Command+B 进行编译,如果报错,再注释掉下一个文件的代码,依次排查,直到找到问题文件为止。
3、定位问题:找到问题文件之后,把前面注释掉的文件代码恢复正常,如果最后问题定位在一个文件中,再依次恢复该文件中的代码,直到复现报错。这时的Xcode报错很有可能会告诉你报错的具体原因。
4、寻求解决方案,找到问题后处理问题。如果你按照上述流程仍然无法定位问题的话,可以考虑将文件发送到我的邮箱,如果不是很麻烦的话,我可以协助你定位一下问题。