小编Ste*_*rot的帖子

NavigationLink isActive 已弃用

在新版本的iOS和Xcode中

NavigationLink(isActive: , destination: , label: ) 
Run Code Online (Sandbox Code Playgroud)

已弃用。

那么我们如何控制NavigationLink的状态呢?

swiftui swiftui-navigationlink

18
推荐指数
2
解决办法
2万
查看次数

最小部署与目标部署

Xcode 中术语“最小部署”和“目标部署”之间的主要区别是什么?

我注意到我必须设置这两个目标版本,但我不确定这两个是不同的还是相同的东西只是不同的词?

xcode app-store ios app-store-connect

8
推荐指数
1
解决办法
4537
查看次数

如何在 SwiftUI 中显示 iPad 和纵向模式下的侧边栏

我在 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

5
推荐指数
1
解决办法
1478
查看次数

iOS SwiftUI - 无法转换 ObservedObject 类型的值

我有这样的看法:

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)

swift swiftui

4
推荐指数
1
解决办法
2860
查看次数

NavigationView 添加顶部填充

我有一个非常简单的视图、背景颜色和一些文本。但是当我将它包装在 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)

在此输入图像描述

navigationview swiftui

2
推荐指数
1
解决办法
3089
查看次数

VStack 显示错误“实例方法 'sheet(item:onDismiss:content:)' 要求 'Int' 符合 '可识别'”

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)

ios swift swiftui

1
推荐指数
1
解决办法
1616
查看次数