#swiftui
#swiftui
Вопрос:
Как я могу изменить каждое содержимое внутри фигурных скобок CustomView отдельно, в коде down я изменяю смещение содержимого, которое работает нормально, но оно применяется ко всему содержимому CustomView, а затем принимает следующий индекс EachFor и делает то же самое. Что правильно и выполняет свою работу!
Моя цель в этом вопросе — найти способ указать CustomView изменять один за другим, а не все вместе!
PS: моей целью использования CustomView было / является предоставление мне возможности изменять код в contentView. Я хочу просто загрузить свое содержимое внутри фигурных скобок CustomView, и все изменения происходят внутри CustomView. и это CustomView может принимать любой вид / содержимое.
мое целевое выходное изображение:
struct ContentView: View {
var body: some View {
CustomView {
Text("Hello, world! 1")
Text("Hello, world! 2")
Text("Hello, world! 3")
Text("Hello, world! 4")
Text("Hello, world! 5")
}
}
}
struct CustomView<Content: View>: View {
var inPutView: () -> Content
init(@ViewBuilder inputView: @escaping () -> Content) {
self.inPutView = inputView
}
var body: some View
{
VStack {
ForEach(0..<5) { index in
inPutView().offset(x: CGFloat(index*20))
}
}
}
}
вывод этого кода:
Обновить:
struct ContentView: View {
var body: some View {
CustomView {
Text("Hello")
Image(systemName: "folder")
Text("Omid")
Image(systemName: "star")
Circle().fill(Color.red).frame(width: 10, height: 10, alignment: .center)
HStack { Image(systemName: "person"); Image(systemName: "1.circle").foregroundColor(Color.green) }
}
}
}
struct CustomView<Content: View>: View {
var inPutView: () -> Content
init(@ViewBuilder inputView: @escaping () -> Content) {
self.inPutView = inputView
}
var body: some View
{
VStack {
ForEach(0..<5) { index in
inPutView().offset(x: CGFloat(index*20))
}
}
}
}
Ответ №1:
Мне кажется, это возможный подход к решению таких задач. По крайней мере, способ перемещения…
Протестировано с Xcode 12.1 / iOS 14.1.
struct ContentView: View {
var body: some View {
CustomView(5) {
Text("Hello, world! ($0 1)")
}
}
}
struct CustomView<Content: View>: View {
private var count: Int
var inPutView: (Int) -> Content
init(_ count: Int = 1, @ViewBuilder inputView: @escaping (Int) -> Content) {
self.count = count
self.inPutView = inputView
}
var body: some View {
VStack {
ForEach((0..<count).indices, id: .self) { index in
inPutView(index).offset(x: CGFloat(index*20))
}
}
}
}
Комментарии:
1. моей целью использования CustomView было / является предоставление мне возможности изменять код в contentView. Я хочу просто загрузить свое содержимое внутри фигурных скобок CustomView, и все изменения происходят внутри CustomView. и это CustomView может принимать любой вид / содержимое. пожалуйста, посмотрите мое обновление в коде.