在新版本的iOS和Xcode中
NavigationLink(isActive: , destination: , label: )
Run Code Online (Sandbox Code Playgroud)
已弃用。
那么我们如何控制NavigationLink的状态呢?
Xcode 中术语“最小部署”和“目标部署”之间的主要区别是什么?
我注意到我必须设置这两个目标版本,但我不确定这两个是不同的还是相同的东西只是不同的词?
我在 iPad 上有一个主细节应用程序,当以纵向模式运行该应用程序时,侧边栏被隐藏。我需要按“后退”按钮才能打开侧边栏。
谁能帮我默认显示侧边栏?我找到了一个答案,建议在应用程序处于纵向时使用 StackNavigationViewStyle,但随后该应用程序看起来就像一个巨大的 iPhone,并且像侧边栏一样消失了主类以显示为视图。
这就是我的代码。
struct ContentView: View {
var body: some View {
NavigationView {
MyMasterView()
DetailsView()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct MyMasterView: View {
var people = ["Option 1", "Option 2", "Option 3"]
var body: some View {
List {
ForEach(people, id: \.self) { person in
NavigationLink(destination: DetailsView()) {
Text(person)
}
}
}
}
}
struct DetailsView: View {
var body: some View { …
Run Code Online (Sandbox Code Playgroud) swiftui ipados swiftui-navigationview swiftui-navigationsplitview
我有这样的看法:
struct CreateAccountButton : View {
@Binding var viewRouter: ViewRouter
var body: some View{
Button(action: {
withAnimation {
viewRouter.currentPage = .register
}
}) {
Text("create_account")
.padding(.vertical)
.frame(maxWidth: .infinity)
.foregroundColor(Color("ColorText"))
.overlay(
RoundedRectangle(cornerRadius: 5)
.stroke(Color.white, lineWidth: 0))
}
.background(Color("BtnGreenBG"))
.frame(minWidth: 0, maxWidth: .infinity)
.cornerRadius(5)
.padding(.top, 12)
}
}
Run Code Online (Sandbox Code Playgroud)
我需要传递我在主视图中创建的 viewRouter:
@StateObject var viewRouter: ViewRouter
Run Code Online (Sandbox Code Playgroud)
我试过:
CreateAccountButton(viewRouter: $viewRouter)
Run Code Online (Sandbox Code Playgroud)
并得到:
Cannot convert value of type 'ObservedObject<ViewRouter>.Wrapper' to expected argument type 'Binding<ViewRouter>'
Run Code Online (Sandbox Code Playgroud)
我是 ios/swiftui 新手,不明白这个错误。
基于这个答案:
我们如何在 SwiftUI 中将 ObservedObject 类型的值转换为 Binding?
我变了
@Binding var …
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的视图、背景颜色和一些文本。但是当我将它包装在 NavigationView 中时,我在视图顶部出现了不需要的间距。我怎样才能消除这个问题?(我想要导航,因为我将添加导航链接)
例如
var body: some View {
NavigationView {
ZStack(alignment: .leading) {
Rectangle()
.fill(
LinearGradient(
gradient: Gradient(colors: [.indigo, .purple]),
startPoint: .bottom,
endPoint: .top
)
)
.ignoresSafeArea()
VStack {
Text("Test")
Spacer()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
VStack 行显示错误“实例方法 'sheet(item:onDismiss:content:)' 要求 'Int' 符合 '可识别'”,但我认为我没有犯任何错误?我是吗?
感觉好像错误来自我的工作表,抱怨我的 Int 应该符合“可识别”,但是 Int 不是“可识别”,因为它是原始的?我该如何解决这个问题?
struct SheetView: View {
@State var bindingItemDiscounts: [Double] =
[ 0.99, 0.25, 0.31, 11.99, 19.99, 0.1, 0.5]
@State var discountMoreThanTen: Int?
var body: some View {
VStack(alignment: .leading) { <- this line
Button {
discountMoreThanTen = bindingItemDiscounts.count
} label: { Text("Check Discounts") }
}.sheet(item: $discountMoreThanTen) { newValue in
if discountMoreThanTen ?? 0 <= 10 {
List(bindingItemDiscounts, id: \.self) { discount in
Text("Discount : \(discount)")
}
}
}
} …
Run Code Online (Sandbox Code Playgroud)