SwiftUI Essentials (SwiftUI の本質)

ユーザー入力の処理

ランドマークアプリでは、ユーザはお気に入りの場所にフラグを立て、リストをフィルタリングしてお気に入りだけを表示できます。この機能を作成するには、まずリストにスイッチを追加して、ユーザがお気に入りだけに集中できるようにします。次に、ユーザがタップしてランドマークにお気に入りのフラグを立てる星型のボタンを追加します。


スタータープロジェクトをダウンロードしてこのチュートリアルに従うか、完成したプロジェクトを開いて自分でコードを調べてください。


20min


予想される時間

プロジェクト
ファイル

Xcode 12





訳注:以下、必要な場所においては Mac と iPhone 両方のセクションを提供しています。
Mac → セクション 1、iPhone → セクション 101 とします。







    Landmark.swift


  1. import Foundation
  2. import SwiftUI
  3. import CoreLocation
  4. struct Landmark: Hashable, Codable, Identifiable {
  5. var id: Int
  6. var name: String
  7. var park: String
  8. var state: String
  9. var description: String
  10. var isFavorite: Bool
  11. private var imageName: String
  12. var image: Image {
  13. Image(imageName)
  14. }
  15. private var coordinates: Coordinates
  16. var locationCoordinate: CLLocationCoordinate2D {
  17. CLLocationCoordinate2D(
  18. latitude: coordinates.latitude,
  19. longitude: coordinates.longitude)
  20. }
  21. struct Coordinates: Hashable, Codable {
  22. var latitude: Double
  23. var longitude: Double
  24. }
  25. }




    LandmarkRow.swift


  1. import SwiftUI
  2. struct LandmarkRow: View {
  3. var landmark: Landmark
  4. var body: some View {
  5. HStack {
  6. landmark.image
  7. .resizable()
  8. .frame(width: 50, height: 50)
  9. Text(landmark.name)
  10. Spacer()
  11. }
  12. }
  13. }
  14. struct LandmarkRow_Previews: PreviewProvider {
  15. static var previews: some View {
  16. Group {
  17. LandmarkRow(landmark: landmarks[0])
  18. LandmarkRow(landmark: landmarks[1])
  19. }
  20. .previewLayout(.fixed(width: 300, height: 70))
  21. }
  22. }



14 行目から、以下のように書き足します。


  1. Spacer()
  2. if landmark.isFavorite {
  3. Image(systemName: "star.fill")
  4. }
  5. }


更に 17 行目に以下のように書き足します。


  1. Image(systemName: "star.fill")
  2. .foregroundColor(.yellow)
  3. }






セクション 1セクション 2セクション 3
セクション 4セクション 5セクション 6
セクション 101セクション 102セクション 103
セクション 104セクション 105セクション 106








目次
Xcode の新機能

フレームワーク

  • SwiftUI

  • ビューの作成と結合

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    ビルドリストとナビゲーション

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6

    セクション 7

    セクション 8


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    セクション 107

    セクション 108

    ユーザー入力の処理

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    パスとシェイプの描画

    セクション 1

    セクション 2

    セクション 3

    セクション 4


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    ビューと移行のアニメーション

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    複雑なインターフェースの構成

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    UI コントロールを扱う

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    UIKit とのインターフェース

    セクション 1

    セクション 2

    セクション 3

    セクション 4


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    watchOS アプリの作成

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    macOS アプリの作成

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6

    セクション 7


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    セクション 107