SwiftUI 重新调整 List 或 NavigationView in body: difference of return List and List in body
SwiftUI retuning List or NavigationView in body: difference of return List and List in body
我对在 SwiftUI 中返回 NavigationView
和 List
有疑问 body
有这样的代码片段:
var body: some View {
let trailingItem = HStack {
Button(action: { print("Button 1") }) {
Image(systemName: "bell")
}
Button(action: { print("Button 2") }) {
Image(systemName: "square.and.arrow.up")
}
}
return NavigationView {
Image("SwiftUI")
.navigationBarItems(trailing: trailingItem)
.navigationBarTitle("Title")
}
}
还有这个
var body: some View {
let numbers = [1, 2, 3, 4, 5]
return List(numbers, id: \.self) {
Text("\(String(describing: [=12=]))")
}
}
在这两个代码片段中,我可以找到 NavigationView
和 List
的 return
关键字
为了弄清楚该语法的作用,我尝试删除 return
关键字但没有任何反应
我想知道:
return
关键字有什么作用?
将return
用于NavigationView
和List
有什么区别
在此先感谢您提供的任何帮助。
SwiftUI 语法中的某些功能可以通过称为 View Builder which is a type of Result Builder
的东西实现
使用视图生成器时,函数和计算属性具有隐式 return(即即使没有 return
关键字,最后一个语句也是 returned)。关于视图生成器中可以包含哪些类型的隐式代码还有其他特定规则,但是像您的示例包含的 let
声明是可以的。有关详细信息,请参阅 https://swiftwithmajid.com/2019/12/18/the-power-of-viewbuilder-in-swiftui/ and https://swiftontap.com/viewbuilder。
SwiftUI View
是一个有趣的特例,因为 View
的 var body
属性 被解释为ViewBuilder
即使我们不必用 @ViewBuilder
显式注释它。但是,如果您要在常规函数中尝试相同的事情,并且该函数有多个语句(Swift 中的单行函数,则需要使用 @ViewBuilder
来获得类似的结果也有隐含的returns)。
@ViewBuilder func myView() -> some View {
Text("test")
Text("Another item")
}
因此,在您的代码示例中(因为您在 var body
中),使用 return
和省略它之间没有区别。
我对在 SwiftUI 中返回 NavigationView
和 List
有疑问 body
有这样的代码片段:
var body: some View {
let trailingItem = HStack {
Button(action: { print("Button 1") }) {
Image(systemName: "bell")
}
Button(action: { print("Button 2") }) {
Image(systemName: "square.and.arrow.up")
}
}
return NavigationView {
Image("SwiftUI")
.navigationBarItems(trailing: trailingItem)
.navigationBarTitle("Title")
}
}
还有这个
var body: some View {
let numbers = [1, 2, 3, 4, 5]
return List(numbers, id: \.self) {
Text("\(String(describing: [=12=]))")
}
}
在这两个代码片段中,我可以找到 NavigationView
和 List
的 return
关键字
为了弄清楚该语法的作用,我尝试删除 return
关键字但没有任何反应
我想知道:
return
关键字有什么作用?
将return
用于NavigationView
和List
在此先感谢您提供的任何帮助。
SwiftUI 语法中的某些功能可以通过称为 View Builder which is a type of Result Builder
的东西实现使用视图生成器时,函数和计算属性具有隐式 return(即即使没有 return
关键字,最后一个语句也是 returned)。关于视图生成器中可以包含哪些类型的隐式代码还有其他特定规则,但是像您的示例包含的 let
声明是可以的。有关详细信息,请参阅 https://swiftwithmajid.com/2019/12/18/the-power-of-viewbuilder-in-swiftui/ and https://swiftontap.com/viewbuilder。
SwiftUI View
是一个有趣的特例,因为 View
的 var body
属性 被解释为ViewBuilder
即使我们不必用 @ViewBuilder
显式注释它。但是,如果您要在常规函数中尝试相同的事情,并且该函数有多个语句(Swift 中的单行函数,则需要使用 @ViewBuilder
来获得类似的结果也有隐含的returns)。
@ViewBuilder func myView() -> some View {
Text("test")
Text("Another item")
}
因此,在您的代码示例中(因为您在 var body
中),使用 return
和省略它之间没有区别。