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は両者のどちらかに引きずられるのではなくで、新たの機能に合わせて用意しているようだ。