iOS ๐ŸŽ/SwiftUI

[iOS/SwiftUI] Form, Group, Section, Controls

fram 2023. 3. 13. 22:22

Form

์• ํ”Œ ๊ณต์‹ ๋ฌธ์„œ

  • ๋ทฐ๋ฅผ ํฌํ•จ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” Containe
  • Control์„ ๊ทธ๋ฃนํ•‘ ํ•  ์ˆ˜ ์žˆ์Œ. ํŠน์ • ์ปจํŠธ๋กค์— ๋Œ€ํ•ด ์ง€์ •๋œ UI๋ฅผ ๋ณด์—ฌ์คŒ. ์•„๋ž˜ ๊ธ€ ์ฐธ๊ณ 
  • ์ฃผ๋กœ ์„ค์ •ํ™”๋ฉด์ด๋‚˜ ๊ธฐ๋ณธ ์•ฑ์˜ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋จ
  • Form ์˜์—ญ ์Šคํฌ๋กค๋ง ๊ฐ€๋Šฅ
struct Form<Content> where Content : View

 

์ฝ”๋“œ ์ „์ฒด ๊นƒ ํ—ˆ๋ธŒ ๋งํฌ


Group

  • ํผ์€ ์ตœ๋Œ€ 10๊ฐœ์˜ ๋ทฐ๋ฅผ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Group ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋งŽ์€ ๋ทฐ๋ฅผ ํฌํ•จ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ
        Form {
            Group {
                Text("Hello, world! 1")
                Text("Hello, world! 2")
                Text("Hello, world! 3")
                Text("Hello, world! 4")
                Text("Hello, world! 5")
                Text("Hello, world! 6")
                Text("Hello, world! 7")
            }
            
            Group {
                Text("Hello, world! 8")
                Text("Hello, world! 9")
                Text("Hello, world! 10")
                Text("Hello, world! 11")
                Text("Hello, world! 12")
                Text("Hello, world! 13")
                Text("Hello, world! 14")
            }
        }

 

Section

        Form {
            Section {
                Text("1")
                Text("2")
            }
            
            Section {
                Text("3")
                Text("4")
            }
        }
  • Section์„ ์‚ฌ์šฉํ•ด์„œ ์˜์—ญ์„ ๋ถ„ํ•  ํ•  ์ˆ˜ ์žˆ์Œ

Section์— ํƒ€์ดํ‹€ ์ง€์ •ํ•˜๊ธฐ

        Form {
            Section("์ฒซ ๋ฒˆ์งธ ๋ฉ”๋‰ด") {
                Text("1")
                Text("2")
            }
            
            Section("๋‘ ๋ฒˆ์งธ ๋ฉ”๋‰ด") {
                Text("3")
                Text("4")
            }
        }

  • ์„น์…˜ ๊ฐ ์ƒ๋‹จ์— ํƒ€์ดํ‹€์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์˜ต์…”๋„ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Œ

Controls

Button

                Button("๋ฒ„ํŠผ") {
                    print("test")
                }

    @State var isOn = true
    
    //.. ์ƒ๋žต
    
    Button("๋ฒ„ํŠผ") {
        print("test")
    }.disabled(!isOn)
  • disabled๋ฅผ ์ด์šฉํ•ด์„œ ๋ฒ„ํŠผ์„ ๋น„ํ™œ์„ฑํ™” ์‹œ์ผœ ์ค„ ์ˆ˜ ์žˆ์Œ

Toggle

                Toggle(isOn: $isOn) {
                    Text("ํ† ๊ธ€")
                }

Picker

enum Food {
    case noodle
    case apple
    case rice
    
    var title: String {
        switch self {
        case .noodle:
            return "๊ตญ์ˆ˜"
        case .apple:
            return "์‚ฌ๊ณผ"
        case .rice:
            return "์Œ€๋ฐฅ"
        }
    }
}
@State var menu = Food.noodle
// ์ƒ๋žต

Picker("์˜ค๋Š˜์˜ ๋ฉ”๋‰ด", selection: $menu) {
    Text(Food.noodle.title).tag(Food.noodle)
    Text(Food.apple.title).tag(Food.apple)
    Text(Food.rice.title).tag(Food.rice)
}

 

TextField

@State var name = ""
// ...์ƒ๋žต

TextField("์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.", text: $name)

  • ์‚ฌ์šฉ์ž์˜ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” TextField๋ฅผ ํฌํ•จ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

 

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

https://www.hohyeonmoon.com/blog/swiftui-tutorial-form/

https://ios-development.tistory.com/1096

https://www.simpleswiftguide.com/swiftui-form-tutorial-how-to-create-and-use-form-in-swiftui/