相关疑难解决方法(0)

无法添加超过 10 个项目来查看 SwiftUI

我正在完成一个需要用户数据输入字段的应用程序。我用少量数据元素对其进行建模以简化开发。今天我尝试添加其他元素,但惊讶地发现我只能向一个视图添加 10 个视图。所以我尝试了最简单的设计(如下)。如果我在视图中添加了 11 个“事物”,它会立即在顶部项目上显示错误,无论它是什么:

“传递给不带参数的调用的参数”

我是否将外部容器称为 ScrollView、VStack、List 或 Form 都没有关系。同样的行为。Text/TextField 子单元是否在 VStack 中无关紧要。

所以我回到了基础 - 刚刚添加了十个文本视图。没问题。添加第十一个,它会爆炸。这是其中一种变体 - 但我需要做的就是添加 10 个简单的 Text 视图以使其中断。

我一定在这里遗漏了一些非常基本的东西。我检查了较新版本的 Xcode,但我有最新版本 11.2 beta 2 (11B44)。

@State private var textField1: String = "Pass to the ListCell"
@State private var textField2: String = "2"
//more of these


var body: some View {

    NavigationView {
        VStack {

            //extract the VStack and create a separate struct
            ListCell(tfString: textField1)

            VStack {
                Text("Text Field")
                TextField("Placeholder", text: $textField2)
                    .textFieldStyle(RoundedBorderTextFieldStyle())
                    .padding()
            }

            VStack { …
Run Code Online (Sandbox Code Playgroud)

xcode swiftui

13
推荐指数
2
解决办法
3727
查看次数

有什么方法可以在 SwiftUI 中使用 @ViewBuilder 创建/提取视图数组

我正在尝试创建一个简单的struct,它接受一组视图并返回一个VStack包含这些视图的普通视图,除了它们都是对角堆叠的。

代码:

struct LeaningTower<Content: View>: View {
    var views: [Content]
    var body: some View {
        VStack {
            ForEach(0..<views.count) { index in
                self.views[index]
                    .offset(x: CGFloat(index * 30))
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这很好用,但每当我不得不调用它时,我总是很生气:

LeaningTower(views: [Text("Something 1"), Text("Something 2"), Text("Something 3")])
Run Code Online (Sandbox Code Playgroud)

在这样的数组中列出视图对我来说似乎非常奇怪,所以我想知道是否有一种方法可以像这样@ViewBuilder调用我的LeaningTower结构:

LeaningTower {  // Same way how you would create a regular VStack
    Text("Something 1")
    Text("Something 2")
    Text("Something 3")
    // And then have all of these Text's in my 'views' array
}
Run Code Online (Sandbox Code Playgroud)

如果有一种方法可以@ViewBuilder …

arrays ios swift swiftui viewbuilder

7
推荐指数
3
解决办法
1432
查看次数

对成员'buildBlock()'的歧义引用

我一直在尝试使用Swift UI为iOS 13创建一个应用程序,但我不断收到这个奇怪的错误:“对成员'buildBlock()'的引用不明确”。

无论我做什么,错误都不会消失。

我尝试一次注释部分代码,以查看可能是引起问题的部分,但是唯一起作用的是注释掉整个视图。

我试过清理构建文件夹并删除派生数据。我还尝试过多次重启计算机和Xcode,但没有任何修复措施。

我很确定这只是一个Xcode错误,但是必须解决它,如果有人能告诉我那是什么,我将非常感谢。

var body: some View {
    GeometryReader { geometry in {
        VStack {
            Button (action: self.editProfilePicture) {
                    Image(ImageNames.AccountIconImageName, bundle: Bundle.main)
                        .resizable()
                        .frame(width: geometry.size.width / SizeConstants.AccountIconSizeDiviser, height: geometry.size.width / SizeConstants.AccountIconSizeDiviser)
                        .padding()
                        .background(ColorConstants.VeryLightGrayColor)
                        .clipShape(Circle())
                }
                .accentColor(.white)
                .padding(.bottom, LargePadding)

                ScrollView (showsVerticalIndicator: false) {

                    let const: Length? = geometry.size.width - SizeConstants.FullNameTextFieldWidthReduction

                    TextBox(textBinding: self.$fullName, placeHolder: Text(Strings.FullNameString), editChanged: self.fullNameChanged)/*.padding(.bottom, SmallPadding)*/.frame(width: const)
                    TextBox(textBinding: self.$username, placeHolder: Text(Strings.UsernameString), editChanged: self.usernameChanged)//.padding(.bottom)

                    Text(verbatim: Strings.ChooseIdType).font(.footnote).color(.gray)

                    TextBox(textBinding: self.$phoneNumber, placeHolder: Text(Strings.PhoneNumberString), editChanged: self.phoneNumberChanged)//.padding(.bottom, SmallPadding)
                    TextBox(textBinding: self.$emailAddress, placeHolder: Text(Strings.EmailAddressString), …
Run Code Online (Sandbox Code Playgroud)

xcode swift ios13 swiftui swift5.1

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

标签 统计

swiftui ×3

swift ×2

xcode ×2

arrays ×1

ios ×1

ios13 ×1

swift5.1 ×1

viewbuilder ×1