iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
SwiftUIの学習のため、ヒレガス本『Cocoa Programming for OS X (5th Edition)』のサンプルをSwiftUIで実装していく。
第一弾はボタンと押すとテキスト領域にパスワードを生成して表示するアプリだ。
書籍ではnibまたはStoryboardと独自のWindowControllerまたはViewControllerを関連づけて、ボタン押下イベントを受け取りテキスト領域にパスワードを表示されていたが、これをSwiftUIで組んだ。
"GeneratePassword.swift"。基本的に書籍のサンプルのまま。
import Foundation
 
private let characters = Array("0123456789abcdefghijklmnopqrstuvwxyz" +
                               "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 
func generateRandomString(length: Int) -> String {
    var string = ""
    for index in 0.. Character {
    let index = Int(arc4random_uniform(UInt32(characters.count)))
    let character = characters[index]
    return character
}
 
”ContentView”。ここに画面の宣言とイベントに対する操作を実装する。
import SwiftUI
 
struct ContentView: View {
    @State private var text: String = ""
    var body: some View {
        VStack {
            Text(text)
            
            Button("Generate Password") {
                let length = 8
                let password = generateRandomString(length: length)
                text = password
            }
        }
        .padding()
    }
}
 
#Preview {
    ContentView()
}
生成したパスワードを表示するテキスト領域とパスワード生成ボタンを縦に並べている。
テキスト領域のクラスは Cocoa (AppKit) と CocoaTouch (UIKIt) で異なっているが、SwiftUIは両者のどちらかに引きずられるのではなくで、新たの機能に合わせて用意しているようだ。