Как я могу создать 2 инициализатора в представлении SwiftUI (которое является структурой)? Я пытаюсь сделать так, чтобы инициализатор взял заголовок и цвет, а тот, который принимает только заголовок. Я пытался создать ...

1
Nighthawk 8 Апр 2021 в 16:24

2 ответа

Лучший ответ

Сделать это можно так:

удобный инициализатор доступен в ссылочном типе! не в типе значения!


struct CustomView: View {

    let title: String
    let color: Color

    init(title: String, color: Color) {
        self.title = title
        self.color = color
    }
    
    init(title: String) {
        self.title = title
        self.color = Color.black
    }

    var body: some View {
        
        Text(title)
            .foregroundColor(color)
        
    }
    
}

Вариант использования:

struct ContentView: View {

    var body: some View {
        
        CustomView(title: "Hello")
        
        CustomView(title: "Hello", color: Color.red)
        
    }
}
2
swiftPunk 8 Апр 2021 в 13:51
struct CustomView: View {
    var title: String
    var color: Color = .black
    
    var body: some View {
        Text(title)
            .foregroundColor(color)
    }
}

struct FooView: View {
    var body: some View {
        CustomView(title: "Title")
        CustomView(title: "Hello", color: .red)
    }
}
0
Shadowrun 8 Апр 2021 в 14:09