Replace page TabView with paging ScrollView; fix diff + centering; bump to 3.2
Build iOS App / Build .ipa and publish source (push) Failing after 16s

The TabView with .page style broke NavigationLink inside tabs (the page
gesture swallows taps) and centered content. Replace with a horizontal paging
ScrollView using containerRelativeFrame and scrollTargetBehavior(.paging):
same swipe-to-change behavior, no gesture conflicts, diff view works again.
Bump to 3.2.
This commit is contained in:
Hermes
2026-08-14 06:46:25 +00:00
parent ed36ed72de
commit 1817422836
2 changed files with 28 additions and 16 deletions
+4 -4
View File
@@ -187,7 +187,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 22;
CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = "";
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = "GiteaPR";
@@ -197,7 +197,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 3.1;
MARKETING_VERSION = 3.2;
PRODUCT_BUNDLE_IDENTIFIER = com.bueso.giteapr;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -211,7 +211,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 22;
CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = "";
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_CFBundleDisplayName = "GiteaPR";
@@ -221,7 +221,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 3.1;
MARKETING_VERSION = 3.2;
PRODUCT_BUNDLE_IDENTIFIER = com.bueso.giteapr;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
+24 -12
View File
@@ -103,19 +103,31 @@ struct PRDetailView: View {
VStack(spacing: 0) {
header(pr)
// Page-style TabView gives iOS-native swipe-to-change between
// sections (matching iOS 26), while the bottom bar taps select.
TabView(selection: $selectedTab) {
OverviewTab(pr: pr)
.tag(DetailTab.overview)
ConversationTab(vm: vm)
.tag(DetailTab.conversation)
FilesTab(vm: vm)
.tag(DetailTab.files)
ChecksTab(vm: vm, onRerun: { showRerunConfirm = $0 })
.tag(DetailTab.checks)
// Horizontal paging ScrollView — swipeable like a TabView, but
// without breaking NavigationLink inside the tabs (TabView's .page
// style swallows taps and interferes with nested navigation).
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 0) {
OverviewTab(pr: pr)
.id(DetailTab.overview)
.containerRelativeFrame(.horizontal)
ConversationTab(vm: vm)
.id(DetailTab.conversation)
.containerRelativeFrame(.horizontal)
FilesTab(vm: vm)
.id(DetailTab.files)
.containerRelativeFrame(.horizontal)
ChecksTab(vm: vm, onRerun: { showRerunConfirm = $0 })
.id(DetailTab.checks)
.containerRelativeFrame(.horizontal)
}
.scrollTargetLayout()
}
.tabViewStyle(.page(indexDisplayMode: .never))
.scrollTargetBehavior(.paging)
.scrollPosition(id: $selectedTab)
.ignoresSafeArea(edges: .bottom)
bottomTabBar