hello OOPer
here is what I tried so far to try to understand how it work
_______________________________________________________
Documentation
init<S>(S, content: () -> Content)
Creates a disclosure group, using a provided string to create a text view for the label.
Available when Label is Text and Content conforms to View.
_______________________________________________________
and in the Definition :
public struct DisclosureGroup<Label, Content> : View where Label : View, Content : View {
/// Creates a disclosure group with the given label and content views.
/// - Parameters:
/// - content: The content shown when the disclosure group expands.
/// - label: A view that describes the content of the disclosure group.
public init(@ViewBuilder content: @escaping () -> Content, @ViewBuilder label: () -> Label)
/// Creates a disclosure group with the given label and content views, and
/// a binding to the expansion state (expanded or collapsed).
/// - Parameters:
/// - isExpanded: A binding to a Boolean value that determines the group's
/// expansion state (expanded or collapsed).
/// - content: The content shown when the disclosure group expands.
/// - label: A view that describes the content of the disclosure group.
public init(isExpanded: Binding<Bool>, @ViewBuilder content: @escaping () -> Content, @ViewBuilder label: () -> Label)
/// The content and behavior of the view.
public var body: some View { get }
/// The type of view representing the body of this view.
/// When you create a custom view, Swift infers this type from your
/// implementation of the required body property.
public typealias Body = some View
}
_______________________________________________________
from this
struct DisclosureGroup<Label, Content> : View where Label : View, Content : View
I expect to call disclosure with 2 view. but it does not seems to work.
I decide to do some test with the first parameter as a string, because I knew it work and try to give the content for the 2 parameter
Test 2 - I tried this and it work
struct ContentView2: View {
var body: some View {
DisclosureGroup("Lightning") {
Text("Fast")
}
}
}
Test 3: I tried to enter the Text view into the disclosure calling , did not work
but the content should be () -> Content and Text is taking an argument ...
struct ContentView3: View {
var body: some View {
DisclosureGroup("Lightning", content: Text("Fast") )
}
}
Test 4 with the last argument inside - calling a var of type some View - did not work
struct ContentView4: View {
var body: some View {
DisclosureGroup ("Lightning", content: ContentViewSmall1)
}
}
struct ContentViewSmall1: View {
var body: some View {
Text("ContentViewSmall 1")
}
}
Test 5 with the last argument inside - calling a func that return some View - Worked
struct ContentView5: View {
var body: some View {
DisclosureGroup ("Lightning", content: ContentViewSmall2)
}
}
func ContentViewSmall2() -> some View {
return Text("ContentViewSmall 2 ")
}
I know I am doing something wrong, and mostly I have an error in my thinking.
if you can help me, it would be great , thank you