首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SwiftUI中将视图作为默认值提供给视图函数?

问如何在SwiftUI中将视图作为默认值提供给视图函数?
EN

Stack Overflow用户
提问于 2021-03-03 13:35:26
回答 4查看 263关注 0票数 0

我有一个向下函数,我希望内容带有一个默认值,我希望这个函数开始工作:

代码语言:javascript
复制
func viewFunction<Content: View>(content: Content = { Text("Hello!") }) -> some View {

    return content

}

我知道,基于这个原因,我可以拆分函数,但是我希望函数带有内容的默认值,而且我也不想有两个函数。

我的目标:我希望能够以:viewFunction()的形式使用我的函数

更新:

Swift没有通用占位符的默认值.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-01-01 20:47:16

最可能的方法是拥有两个函数。就像下行代码一样:

PS:我们不能使用带有泛型类型默认值的函数.

代码语言:javascript
复制
struct ContentView: View {
    
    var body: some View {

        viewFunction(content: Text("Hello, world!"))
        
        viewFunction()
    }
}


func viewFunction<Content: View>(content: Content) -> some View {

    return content

}

func viewFunction() -> some View {

    return Text("Hello, world!")

}
票数 1
EN

Stack Overflow用户

发布于 2021-03-03 14:04:21

简单地说是:

代码语言:javascript
复制
func viewFunction<Content: View>(content: () -> Content = { Text("hello") as! Content }) -> some View {
  return content()
}
票数 3
EN

Stack Overflow用户

发布于 2021-03-03 16:24:50

我喜欢as!-casting的答案,因为它不需要生成代码就可以保存文档。

但是一般的解决方案是重载,因为Swift没有通用占位符的默认设置。

注意:这个问题不是SwiftUI特有的.

代码语言:javascript
复制
func viewFunction<Content: View>(content: Content) -> some View { content }

func viewFunction() -> some View {
  viewFunction(content: Text("Hello!"))
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66458184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档