Skip to content

Commit 4230b5d

Browse files
committed
macOS Support
Basic support for macos in the example project seperated library code base for macos and iOS
1 parent f0e50f5 commit 4230b5d

38 files changed

+1192
-62
lines changed

Examples/GKMatchMaker/GKMatchMaker.xcodeproj/project.pbxproj

Lines changed: 44 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,22 @@
1313
1507A0C725E419E5006DDBFC /* AuthenticationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1507A0C525E419E5006DDBFC /* AuthenticationView.swift */; };
1414
151CAAA225E39837002A7FDC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 151CAA8D25E39837002A7FDC /* Assets.xcassets */; };
1515
151CAAA325E39837002A7FDC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 151CAA8D25E39837002A7FDC /* Assets.xcassets */; };
16-
151CAAD125E39928002A7FDC /* Config.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 151CAAD025E39928002A7FDC /* Config.xcconfig */; };
17-
151CAAD225E39928002A7FDC /* Config.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 151CAAD025E39928002A7FDC /* Config.xcconfig */; };
1816
151CAAD725E399D6002A7FDC /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 151CAAD625E399D6002A7FDC /* GameKit.framework */; };
1917
151D895F2602660B00979718 /* MatchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 151D895E2602660B00979718 /* MatchView.swift */; };
2018
151D89602602660B00979718 /* MatchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 151D895E2602660B00979718 /* MatchView.swift */; };
21-
151F91ED25E42EC60015DD88 /* PrimaryButtonModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 151F91EC25E42EC60015DD88 /* PrimaryButtonModifier.swift */; };
22-
151F91EE25E42EC60015DD88 /* PrimaryButtonModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 151F91EC25E42EC60015DD88 /* PrimaryButtonModifier.swift */; };
2319
151F91F925E4EC070015DD88 /* AuthenticationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 151F91F825E4EC070015DD88 /* AuthenticationViewModel.swift */; };
2420
151F91FA25E4EC070015DD88 /* AuthenticationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 151F91F825E4EC070015DD88 /* AuthenticationViewModel.swift */; };
2521
152736842607D0740068853D /* MatchMakingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 152736812607D0730068853D /* MatchMakingView.swift */; };
2622
152736882607D07C0068853D /* MatchMakingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 152736812607D0730068853D /* MatchMakingView.swift */; };
2723
15A6F7D725E39B7D00FE5387 /* GameKitUI in Frameworks */ = {isa = PBXBuildFile; productRef = 15A6F7D625E39B7D00FE5387 /* GameKitUI */; };
2824
15A6F7D925E39B8300FE5387 /* GameKitUI in Frameworks */ = {isa = PBXBuildFile; productRef = 15A6F7D825E39B8300FE5387 /* GameKitUI */; };
29-
15A6F7DB25E39B8F00FE5387 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A6F7DA25E39B8F00FE5387 /* GameKit.framework */; };
3025
15A6F7E225E39BC100FE5387 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15A6F7DF25E39BC100FE5387 /* ContentView.swift */; };
31-
15A6F7E325E39BC100FE5387 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15A6F7DF25E39BC100FE5387 /* ContentView.swift */; };
3226
15A6F7F125E39E0500FE5387 /* MatchMakingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15A6F7F025E39E0500FE5387 /* MatchMakingViewModel.swift */; };
3327
15A6F7F225E39E0500FE5387 /* MatchMakingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15A6F7F025E39E0500FE5387 /* MatchMakingViewModel.swift */; };
28+
15D90EAA2610B3190010E6C9 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15D90EA92610B3190010E6C9 /* GameKit.framework */; };
29+
15D90EAE2610B7850010E6C9 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15D90EAD2610B77E0010E6C9 /* ContentView.swift */; };
30+
15D90EB42610BBC60010E6C9 /* PrimaryButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15D90EB32610BBBD0010E6C9 /* PrimaryButtonStyle.swift */; };
31+
15D90EB52610BBC60010E6C9 /* PrimaryButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15D90EB32610BBBD0010E6C9 /* PrimaryButtonStyle.swift */; };
3432
15F85DE4260272CF0009A734 /* GKMatchMakerAppModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15F85DE3260272CF0009A734 /* GKMatchMakerAppModel.swift */; };
3533
15F85DE7260272D20009A734 /* GKMatchMakerAppModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15F85DE3260272CF0009A734 /* GKMatchMakerAppModel.swift */; };
3634
/* End PBXBuildFile section */
@@ -48,12 +46,13 @@
4846
151CAAD625E399D6002A7FDC /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk/System/Library/Frameworks/GameKit.framework; sourceTree = DEVELOPER_DIR; };
4947
151CAAD825E399DF002A7FDC /* GameKitUI.swift */ = {isa = PBXFileReference; lastKnownFileType = folder; name = GameKitUI.swift; path = ../..; sourceTree = "<group>"; };
5048
151D895E2602660B00979718 /* MatchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatchView.swift; sourceTree = "<group>"; };
51-
151F91EC25E42EC60015DD88 /* PrimaryButtonModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimaryButtonModifier.swift; sourceTree = "<group>"; };
5249
151F91F825E4EC070015DD88 /* AuthenticationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationViewModel.swift; sourceTree = "<group>"; };
5350
152736812607D0730068853D /* MatchMakingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MatchMakingView.swift; sourceTree = "<group>"; };
54-
15A6F7DA25E39B8F00FE5387 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
5551
15A6F7DF25E39BC100FE5387 /* ContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
5652
15A6F7F025E39E0500FE5387 /* MatchMakingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatchMakingViewModel.swift; sourceTree = "<group>"; };
53+
15D90EA92610B3190010E6C9 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
54+
15D90EAD2610B77E0010E6C9 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
55+
15D90EB32610BBBD0010E6C9 /* PrimaryButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimaryButtonStyle.swift; sourceTree = "<group>"; };
5756
15F85DE3260272CF0009A734 /* GKMatchMakerAppModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GKMatchMakerAppModel.swift; sourceTree = "<group>"; };
5857
/* End PBXFileReference section */
5958

@@ -72,7 +71,7 @@
7271
buildActionMask = 2147483647;
7372
files = (
7473
15A6F7D925E39B8300FE5387 /* GameKitUI in Frameworks */,
75-
15A6F7DB25E39B8F00FE5387 /* GameKit.framework in Frameworks */,
74+
15D90EAA2610B3190010E6C9 /* GameKit.framework in Frameworks */,
7675
);
7776
runOnlyForDeploymentPostprocessing = 0;
7877
};
@@ -96,7 +95,7 @@
9695
isa = PBXGroup;
9796
children = (
9897
1507A0BC25E410CA006DDBFC /* GKMatchMakerApp.swift */,
99-
151F91E825E42DE30015DD88 /* Modifiers */,
98+
15D90EB22610BBBD0010E6C9 /* Modifiers */,
10099
15A6F7E025E39BC100FE5387 /* ViewModels */,
101100
15A6F7DE25E39BC100FE5387 /* Views */,
102101
151CAA8D25E39837002A7FDC /* Assets.xcassets */,
@@ -116,6 +115,7 @@
116115
151CAA9425E39837002A7FDC /* iOS */ = {
117116
isa = PBXGroup;
118117
children = (
118+
15D90EAB2610B76D0010E6C9 /* Views */,
119119
151CAA9525E39837002A7FDC /* Info.plist */,
120120
);
121121
path = iOS;
@@ -124,6 +124,7 @@
124124
151CAA9B25E39837002A7FDC /* macOS */ = {
125125
isa = PBXGroup;
126126
children = (
127+
15D90EAC2610B77E0010E6C9 /* Views */,
127128
151CAA9C25E39837002A7FDC /* Info.plist */,
128129
151CAA9D25E39837002A7FDC /* macOS.entitlements */,
129130
);
@@ -133,20 +134,12 @@
133134
151CAAD525E399D6002A7FDC /* Frameworks */ = {
134135
isa = PBXGroup;
135136
children = (
136-
15A6F7DA25E39B8F00FE5387 /* GameKit.framework */,
137+
15D90EA92610B3190010E6C9 /* GameKit.framework */,
137138
151CAAD625E399D6002A7FDC /* GameKit.framework */,
138139
);
139140
name = Frameworks;
140141
sourceTree = "<group>";
141142
};
142-
151F91E825E42DE30015DD88 /* Modifiers */ = {
143-
isa = PBXGroup;
144-
children = (
145-
151F91EC25E42EC60015DD88 /* PrimaryButtonModifier.swift */,
146-
);
147-
path = Modifiers;
148-
sourceTree = "<group>";
149-
};
150143
151F91F725E4EBEE0015DD88 /* Authentication */ = {
151144
isa = PBXGroup;
152145
children = (
@@ -160,7 +153,6 @@
160153
children = (
161154
15A6F7FD25E39F8700FE5387 /* Authentication */,
162155
15A6F7FC25E39F7D00FE5387 /* MultiPlayer */,
163-
15A6F7DF25E39BC100FE5387 /* ContentView.swift */,
164156
);
165157
path = Views;
166158
sourceTree = "<group>";
@@ -200,6 +192,30 @@
200192
path = Authentication;
201193
sourceTree = "<group>";
202194
};
195+
15D90EAB2610B76D0010E6C9 /* Views */ = {
196+
isa = PBXGroup;
197+
children = (
198+
15A6F7DF25E39BC100FE5387 /* ContentView.swift */,
199+
);
200+
path = Views;
201+
sourceTree = "<group>";
202+
};
203+
15D90EAC2610B77E0010E6C9 /* Views */ = {
204+
isa = PBXGroup;
205+
children = (
206+
15D90EAD2610B77E0010E6C9 /* ContentView.swift */,
207+
);
208+
path = Views;
209+
sourceTree = "<group>";
210+
};
211+
15D90EB22610BBBD0010E6C9 /* Modifiers */ = {
212+
isa = PBXGroup;
213+
children = (
214+
15D90EB32610BBBD0010E6C9 /* PrimaryButtonStyle.swift */,
215+
);
216+
path = Modifiers;
217+
sourceTree = "<group>";
218+
};
203219
/* End PBXGroup section */
204220

205221
/* Begin PBXNativeTarget section */
@@ -250,7 +266,7 @@
250266
isa = PBXProject;
251267
attributes = {
252268
LastSwiftUpdateCheck = 1240;
253-
LastUpgradeCheck = 1240;
269+
LastUpgradeCheck = 1250;
254270
TargetAttributes = {
255271
151CAA9125E39837002A7FDC = {
256272
CreatedOnToolsVersion = 12.4;
@@ -284,7 +300,6 @@
284300
isa = PBXResourcesBuildPhase;
285301
buildActionMask = 2147483647;
286302
files = (
287-
151CAAD125E39928002A7FDC /* Config.xcconfig in Resources */,
288303
151CAAA225E39837002A7FDC /* Assets.xcassets in Resources */,
289304
);
290305
runOnlyForDeploymentPostprocessing = 0;
@@ -293,7 +308,6 @@
293308
isa = PBXResourcesBuildPhase;
294309
buildActionMask = 2147483647;
295310
files = (
296-
151CAAD225E39928002A7FDC /* Config.xcconfig in Resources */,
297311
151CAAA325E39837002A7FDC /* Assets.xcassets in Resources */,
298312
);
299313
runOnlyForDeploymentPostprocessing = 0;
@@ -311,7 +325,7 @@
311325
151D895F2602660B00979718 /* MatchView.swift in Sources */,
312326
15A6F7E225E39BC100FE5387 /* ContentView.swift in Sources */,
313327
152736842607D0740068853D /* MatchMakingView.swift in Sources */,
314-
151F91ED25E42EC60015DD88 /* PrimaryButtonModifier.swift in Sources */,
328+
15D90EB42610BBC60010E6C9 /* PrimaryButtonStyle.swift in Sources */,
315329
1507A0BD25E410CA006DDBFC /* GKMatchMakerApp.swift in Sources */,
316330
15A6F7F125E39E0500FE5387 /* MatchMakingViewModel.swift in Sources */,
317331
);
@@ -325,9 +339,9 @@
325339
1507A0C725E419E5006DDBFC /* AuthenticationView.swift in Sources */,
326340
151F91FA25E4EC070015DD88 /* AuthenticationViewModel.swift in Sources */,
327341
151D89602602660B00979718 /* MatchView.swift in Sources */,
328-
15A6F7E325E39BC100FE5387 /* ContentView.swift in Sources */,
329342
152736882607D07C0068853D /* MatchMakingView.swift in Sources */,
330-
151F91EE25E42EC60015DD88 /* PrimaryButtonModifier.swift in Sources */,
343+
15D90EAE2610B7850010E6C9 /* ContentView.swift in Sources */,
344+
15D90EB52610BBC60010E6C9 /* PrimaryButtonStyle.swift in Sources */,
331345
1507A0BE25E410CA006DDBFC /* GKMatchMakerApp.swift in Sources */,
332346
15A6F7F225E39E0500FE5387 /* MatchMakingViewModel.swift in Sources */,
333347
);
@@ -503,6 +517,7 @@
503517
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
504518
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
505519
CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;
520+
CODE_SIGN_IDENTITY = "Apple Development";
506521
CODE_SIGN_STYLE = Automatic;
507522
COMBINE_HIDPI_IMAGES = YES;
508523
DEVELOPMENT_TEAM = "$(XCCONFIG_DEVELOPMENT_TEAM)";
@@ -516,6 +531,7 @@
516531
MACOSX_DEPLOYMENT_TARGET = 11.0;
517532
PRODUCT_BUNDLE_IDENTIFIER = "$(XCCONFIG_BUNDLE_ID)";
518533
PRODUCT_NAME = GKMatchMaker;
534+
PROVISIONING_PROFILE_SPECIFIER = "";
519535
SDKROOT = macosx;
520536
SWIFT_VERSION = 5.0;
521537
};
@@ -528,6 +544,7 @@
528544
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
529545
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
530546
CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;
547+
CODE_SIGN_IDENTITY = "Apple Development";
531548
CODE_SIGN_STYLE = Automatic;
532549
COMBINE_HIDPI_IMAGES = YES;
533550
DEVELOPMENT_TEAM = "$(XCCONFIG_DEVELOPMENT_TEAM)";
@@ -541,6 +558,7 @@
541558
MACOSX_DEPLOYMENT_TARGET = 11.0;
542559
PRODUCT_BUNDLE_IDENTIFIER = "$(XCCONFIG_BUNDLE_ID)";
543560
PRODUCT_NAME = GKMatchMaker;
561+
PROVISIONING_PROFILE_SPECIFIER = "";
544562
SDKROOT = macosx;
545563
SWIFT_VERSION = 5.0;
546564
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>PreviewsEnabled</key>
6+
<false/>
7+
</dict>
8+
</plist>

Examples/GKMatchMaker/Shared/GKMatchMakerApp.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ struct GKMatchMakerApp: App {
3434
public var body: some Scene {
3535
WindowGroup {
3636
ZStack {
37+
Color("BackgroundColor").ignoresSafeArea()
3738
ContentView()
3839
.alert(isPresented: self.$viewModel.showAlert) {
3940
Alert(title: Text(self.viewModel.alertTitle),

Examples/GKMatchMaker/Shared/Modifiers/PrimaryButtonModifier.swift renamed to Examples/GKMatchMaker/Shared/Modifiers/PrimaryButtonStyle.swift

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,13 @@
2626

2727
import SwiftUI
2828

29-
struct PrimaryButtonModifier: ViewModifier {
30-
func body(content: Content) -> some View {
31-
return content
29+
struct PrimaryButtonStyle: ButtonStyle {
30+
func makeBody(configuration: Self.Configuration) -> some View {
31+
configuration.label
3232
.font(.title)
3333
.padding(32)
34-
.background(Color("ButtonColor"))
34+
.foregroundColor(configuration.isPressed ? Color("ButtonColor") : Color("ButtonTextColor"))
35+
.background(configuration.isPressed ? Color("ButtonTextColor") : Color("ButtonColor"))
3536
.cornerRadius(32)
36-
.foregroundColor(Color("ButtonTextColor"))
37-
}
38-
}
39-
40-
extension Text {
41-
func primaryButtonStyle() -> some View {
42-
self.modifier(PrimaryButtonModifier())
4337
}
4438
}

Examples/GKMatchMaker/Shared/ViewModels/GKMatchMakerAppModel.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class GKMatchMakerAppModel: ObservableObject {
5656

5757
public init() {
5858
self.subscribe()
59+
/*
5960
NotificationCenter.default.addObserver(forName: nil, object: nil, queue: nil) { notification in
6061
os_log("Notification found with:\r\n name:%{public}@\r\nobject:%{public}\r\nuserInfo: %{public})",
6162
log: .default,
@@ -65,6 +66,7 @@ class GKMatchMakerAppModel: ObservableObject {
6566
String(describing: notification.userInfo)
6667
)
6768
}
69+
*/
6870
}
6971

7072
deinit {

Examples/GKMatchMaker/Shared/Views/Authentication/AuthenticationView.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ struct AuthenticationView: View {
4242
self.viewModel.showAuthenticationModal()
4343
} label: {
4444
Text("Login")
45-
.primaryButtonStyle()
4645
}
46+
.buttonStyle(PrimaryButtonStyle())
4747
}
48-
.navigationBarTitle(Text("GameKit Authentication"))
48+
.navigationTitle(Text("GameKit Authentication"))
4949
}
5050
.onAppear() {
5151
self.viewModel.load()
@@ -59,6 +59,7 @@ struct AuthenticationView: View {
5959
self.viewModel.showModal = false
6060
self.viewModel.currentState = "Hello \(player.displayName)"
6161
}
62+
.frame(minWidth: 800, maxWidth: .infinity, minHeight: 500, maxHeight: .infinity)
6263
}
6364
.alert(isPresented: self.$viewModel.showAlert) {
6465
Alert(title: Text(self.viewModel.alertTitle),

Examples/GKMatchMaker/Shared/Views/MultiPlayer/MatchMakingView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ struct MatchMakingView: View {
4141
self.viewModel.showMatchMakerModal()
4242
} label: {
4343
Text("Create Match")
44-
.primaryButtonStyle()
4544
}
45+
.buttonStyle(PrimaryButtonStyle())
4646
}
47-
.navigationBarTitle(Text("GameKit Matchmaker"))
47+
.navigationTitle(Text("GameKit Matchmaker"))
4848
}
4949
.onAppear() {
5050
self.viewModel.load()

Examples/GKMatchMaker/Shared/Views/MultiPlayer/MatchView.swift

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,20 @@ struct MatchView: View {
5151
}
5252
}
5353
}
54-
.navigationBarTitle(Text("GameKit Match"), displayMode: .inline)
55-
.navigationBarItems(trailing:
56-
Button(action: {
57-
GKMatchManager.shared.cancel()
58-
}) {
59-
HStack(alignment: .center) {
60-
Image(systemName: "xmark.circle").imageScale(.large)
61-
Text("Cancel")
54+
.navigationTitle(Text("GameKit Match"))
55+
.toolbar {
56+
ToolbarItemGroup {
57+
Button(action: {
58+
GKMatchManager.shared.cancel()
59+
}) {
60+
HStack(alignment: .center) {
61+
Image(systemName: "xmark.circle").imageScale(.large)
62+
Text("Cancel")
63+
}
6264
}
6365
}
64-
)
66+
}
6567
}
66-
.navigationViewStyle(StackNavigationViewStyle())
6768
}
6869
}
6970

Examples/GKMatchMaker/Shared/Views/ContentView.swift renamed to Examples/GKMatchMaker/iOS/Views/ContentView.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,8 @@ struct ContentView: View {
4444
}
4545
}
4646
}
47-
.navigationBarTitle(Text("GameKit"))
47+
.navigationTitle(Text("GameKit"))
4848
}
49-
.navigationViewStyle(StackNavigationViewStyle())
5049
}
5150
}
5251

0 commit comments

Comments
 (0)