フレームワークの統合

macOS アプリの作成




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









プレビューその 1



LandmarkList.swift


  1. import SwiftUI
  2. struct LandmarkList: View {
  3. @EnvironmentObject var modelData: ModelData
  4. @State private var showFavoritesOnly = false
  5. var filteredLandmarks: [Landmark] {
  6. modelData.landmarks.filter { landmark in
  7. (!showFavoritesOnly || landmark.isFavorite)
  8. }
  9. }
  10. var body: some View {
  11. NavigationView {
  12. List {
  13. Toggle(isOn: $showFavoritesOnly) {
  14. Text("Favorites only")
  15. }
  16. ForEach(filteredLandmarks) { landmark in
  17. NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
  18. LandmarkRow(landmark: landmark)
  19. }
  20. }
  21. }
  22. .navigationTitle("Landmarks")
  23. .frame(minWidth: 300)
  24. .toolbar {
  25. ToolbarItem {
  26. Menu {
  27. } label: {
  28. Label("Filter", systemImage: "slider.horizontal.3")
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }
  35. struct LandmarkList_Previews: PreviewProvider {
  36. static var previews: some View {
  37. LandmarkList()
  38. .environmentObject(ModelData())
  39. }
  40. }


プレビューその 2



LandmarkList.swift


  1. NavigationView {
  2. List {
  3. ForEach(filteredLandmarks) { landmark in
  4. NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
  5. LandmarkRow(landmark: landmark)
  6. }
  7. }
  8. }
  9. .navigationTitle("Landmarks")
  10. .frame(minWidth: 300)
  11. .toolbar {
  12. ToolbarItem {
  13. Menu {
  14. Toggle(isOn: $showFavoritesOnly) {
  15. Label("Favorites only", systemImage: "star.fill")
  16. }
  17. } label: {
  18. Label("Filter", systemImage: "slider.horizontal.3")
  19. }
  20. }
  21. }


LandmarkList.swift


  1. @State private var showFavoritesOnly = false
  2. enum FilterCategory: String, CaseIterable, Identifiable {
  3. case all = "All"
  4. case lakes = "Lakes"
  5. case rivers = "Rivers"
  6. case mountains = "Mountains"
  7. var id: FilterCategory { self }
  8. }
  9. var filteredLandmarks: [Landmark] {
  10. modelData.landmarks.filter { landmark in






LandmarkList.swift


  1. @EnvironmentObject var modelData: ModelData
  2. @State private var showFavoritesOnly = false
  3. @State private var filter = FilterCategory.all
  4. enum FilterCategory: String, CaseIterable, Identifiable {


LandmarkList.swift


  1. var filteredLandmarks: [Landmark] {
  2. modelData.landmarks.filter { landmark in
  3. (!showFavoritesOnly || landmark.isFavorite)
  4. && (filter == .all || filter.rawValue == landmark.category.rawValue)
  5. }
  6. }


LandmarkList.swift


  1. ToolbarItem {
  2. Menu {
  3. Picker("Category", selection: $filter) {
  4. ForEach(FilterCategory.allCases) { category in
  5. Text(category.rawValue).tag(category)
  6. }
  7. }
  8. .pickerStyle(InlinePickerStyle())
  9. Toggle(isOn: $showFavoritesOnly) {
  10. Label("Favorites only", systemImage: "star.fill")
  11. }
  12. } label: {
  13. Label("Filter", systemImage: "slider.horizontal.3")
  14. }


LandmarkList.swift


  1. && (filter == .all || filter.rawValue == landmark.category.rawValue)
  2. }
  3. }
  4. var title: String {
  5. let title = filter == .all ? "Landmarks" : filter.rawValue
  6. return showFavoritesOnly ? "Favorite \(title)" : title
  7. }
  8. var body: some View {
  9. NavigationView {
  10. List {
  11. ForEach(filteredLandmarks) { landmark in
  12. NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
  13. LandmarkRow(landmark: landmark)
  14. }
  15. }
  16. }
  17. .navigationTitle(title)
  18. .frame(minWidth: 300)
  19. .toolbar {
  20. ToolbarItem {
  21. Menu {


プレビューその 3



LandmarkList.swift


  1. Toggle(isOn: $showFavoritesOnly) {
  2. Label("Favorites only", systemImage: "star.fill")
  3. }
  4. } label: {
  5. Label("Filter", systemImage: "slider.horizontal.3")
  6. }
  7. }
  8. }
  9. Text("Select a Landmark")
  10. }
  11. }
  12. }
  13. struct LandmarkList_Previews: PreviewProvider {













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






目次
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


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    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