SwiftUI中如何移除NavigationLink的默认前进图标
要移除NavigationLink自带的默认箭头,让它和自定义Button的样式统一,有两种简单的实现方式:
方法一:使用PlainNavigationLinkStyle
给NavigationLink添加.navigationLinkStyle(PlainNavigationLinkStyle()),直接隐藏默认箭头图标,保留你自定义的HStack内容:
List { Section { NavigationLink(destination: changePassword(oldPassword: $password)) { HStack { Text("Şifreyi Değiştir") Spacer() Image(systemName: "chevron.right") } } .foregroundColor(.orange) .navigationLinkStyle(PlainNavigationLinkStyle()) // 添加该行隐藏默认箭头 Button(action: { self.showingDeleteAccountPopup = true }) { HStack { Text("Hesabı Sil") Spacer() Image(systemName: "chevron.right") } } } }
方法二:手动控制NavigationLink激活状态
通过绑定布尔值控制跳转,让NavigationLink完全继承自定义按钮样式,无任何默认UI元素:
// 先在视图中添加绑定属性 @State private var isNavigatingToChangePassword = false List { Section { Button(action: { isNavigatingToChangePassword = true }) { HStack { Text("Şifreyi Değiştir") Spacer() Image(systemName: "chevron.right") } } .foregroundColor(.orange) // 将NavigationLink放在背景中,不显示默认样式 .background( NavigationLink( destination: changePassword(oldPassword: $password), isActive: $isNavigatingToChangePassword, label: { EmptyView() } ) ) Button(action: { self.showingDeleteAccountPopup = true }) { HStack { Text("Hesabı Sil") Spacer() Image(systemName: "chevron.right") } } } }
两种方法都能实现样式统一,方法一更简洁,方法二更灵活,适合需要完全自定义交互逻辑的场景。
内容的提问来源于stack exchange,提问作者Abdullah NUR
相关产品推荐
相关产品推荐

