当前位置: 首页 > 知识库问答 >
问题:

不能在SwiftUI中使用自定义视图

乐正光誉
2023-03-14

对于我的SwiftUI应用程序,我创建了一个简单的 视图,它有一个设置好的字体大小和文本颜色。 声明如下:

struct Title: View {
    var string: String
    
    var body: some View {
        Text(string)
            .font(.system(size: 32))
            .color(Color.black)
    }
}

我现在在内容视图的主体中有以下文本对象:

var body: some View {
    VStack(alignment: .leading) {
        Text("Welcome")
            .font(.largeTitle)
            .color(Color.black)
        Text("to SwiftUI")
            .font(.largeTitle)
            .color(Color.secondary)
    }
}

所以现在,我想用我的

var body: some View {
    VStack(alignment: .leading) {
        Title("Welcome")
        Title("to SwiftUI")
    }
}

在替换视图之后,我从Xcode收到了一些看起来不相关的错误消息,这些消息会阻止应用程序编译:

“静态成员”leading"不能用于类型“horizontalalignment”的实例

'(LocalizedStringKey)-&>;text'不能转换为'(LocalizedStringKey,String?,Bundle?,StaticString?)-&>;文本‘

“font”不能转换为“font?”

。。。还有更多。返回到 而不是 可以“修复”这些问题。

有趣的是,我还有一个自定义的 视图,我可以在没有任何问题的情况下添加该视图:

struct PrimaryButton: View {
    var title: String
    
    var body: some View {
        Button(action: { print("tapped") }) {
            Text(title)
                .font(Font.primaryButton)
                .offset(y: 1)
                .padding(.horizontal, 20)
                .padding(.vertical, 14)
        }
    }
}

。。。然后使用它:

PrimaryButton(title: "Let's go")

这只是一个beta问题,还是我漏掉了什么?

共有3个答案

满耀
2023-03-14

今天,2019年10月1日,Swift提示我将 替换为。

今天起作用了 昨天起作用了,但今天不起作用了。HTH

堵远航
2023-03-14

初始值设定项中缺少 参数。请在下面找到更新的代码:

var body: some View {
    VStack(alignment: .leading) {
        Title(string: "Welcome")
        Title(string: "to SwiftUI")
    }
}

FYI:br>我已经创建了一个示例应用程序

// MARK - CustomView

struct ContentView : View {
    var body: some View {
        VStack{
            CustomView(aString: "First String")
            CustomView(aString: "Second String")
        }
    }
}

// MARK - CustomView

struct CustomView : View {
    var aString: String
    var body: some View {
        Text(aString)
    }
}
常海
2023-03-14

您需要将 添加到 初始值设定项:

var body: some View {
    VStack(alignment: .leading) {
        Title(string: "Welcome")
        Title(string: "to SwiftUI")
    }
}

编译器错误目前具有误导性,并且不在真正问题所在的附近。

 类似资料:
  • 我们为应用程序设计了一些自定义控件,如CustomButton、CustomTexView等。这些控件定义应用程序的主题并具有标准大小。现在我们正计划在我们的项目中使用SwiftUI。如何在SwiftUI结构中使用这些自定义控件? 即。 }

  • 我按照本教程创建了一个自定义。xib,我计划在表格视图的单元格中使用它: https://medium.com/@brianclouser/swift-3-creating-a-custom-view-from-a-xib-ecdfe5b3a960 以下是我创建的 .xib 类: 以前,我在情节提要中创建我的表视图单元格,但我已经意识到我想要一个更灵活的视图,以便我可以在应用的不同部分使用它,所以

  • 我试图找出正确的方法,有条件地包括一个视图与swiftui。我不能直接在视图中使用,必须使用堆栈视图才能做到这一点。 这是可行的,但似乎会有更干净的方法。

  • 我试图用RobolectRic2.1.1运行单元测试,但我无法让它膨胀自定义布局(例如,ViewPagerIndicator类)。假设这是我的布局: 其结果是: 我的最后一招是尝试使用影子类: 并使用。这再次导致 你们能给我指出正确的方向吗?我没主意了。多谢了。

  • 我正在处理一个货币输入屏幕,需要实现一个自定义的来根据初始化的金额设置一个状态变量。 我原以为这会起作用,但我得到了一个编译器错误:

  • 提前致谢 下面是我的plugin.xml

  • 问题内容: 我有一个.bmp图像,我想将其用作GUI的光标。该QCursor文件表明,这是可能的(“要创建自己的位图光标,要么使用QCursor构造函数需要一个位图和一个口罩或需要一个像素图作为参数构造函数”),但我似乎无法得到它在我收到’TypeError:QCursor():当我尝试将建议的模块与位图一起使用时,参数1具有意外的类型’str’时起作用。应该怎么做? 下面是产生上述错误的代码。该

  • 问题内容: Laravel 4.2 可以选择指定自定义视图,例如: 至少在 Laravel 5 中消失了。 有没有办法在 Laravel 5中 复制此行为? 问题答案: 而在 Laravel 4.2中, 我将使用: 在 Laravel 5中, 您可以复制以下内容: 现在,在包括视图,将有可用的分页方法,如,,,等。 您可以在http://laravel.com/docs/5.0/paginatio