小编Cas*_*gen的帖子

切换标签时,TabView重置导航堆栈

我有一个简单的TabView:

TabView {
    NavigationView {
        VStack {
            NavigationLink(destination: Text("Detail")) {
                Text("Go to detail")
            }
        }
    }
        .tabItem { Text("First") }
        .tag(0)
    Text("Second View")
        .tabItem { Text("Second") }
        .tag(1)
}
Run Code Online (Sandbox Code Playgroud)

当我转到选项卡1上的详细信息视图时,切换到选项卡2,然后再切换回选项卡1,我假设将返回到详细信息视图(iOS中随处可见的基本UX)。而是重置为选项卡1的根视图。

由于SwiftUI并不希望立即提供支持,因此该如何解决呢?

swiftui

15
推荐指数
2
解决办法
657
查看次数

如何在SwiftUI中返回与UIKit中相同的行为(interactivePopGestureRecognizer)

交互式弹出手势识别器应允许用户在滑过屏幕的一半以上(或这些行周围的内容)时返回导航堆栈中的上一个视图。在SwiftUI中,如果滑动距离不够远,手势不会被取消。

SwiftUI: https ://imgur.com/xxVnhY7

UIKit: https //imgur.com/f6WBUne


题:

使用SwiftUI视图时能否获得UIKit行为?


尝试次数

我试图将UIHostingController嵌入UINavigationController内,但其行为与NavigationView完全相同。

struct ContentView: View {
    var body: some View {
        UIKitNavigationView {
            VStack {
                NavigationLink(destination: Text("Detail")) {
                    Text("SwiftUI")
                }
            }.navigationBarTitle("SwiftUI", displayMode: .inline)
        }.edgesIgnoringSafeArea(.top)
    }
}

struct UIKitNavigationView<Content: View>: UIViewControllerRepresentable {

    var content: () -> Content

    init(@ViewBuilder content: @escaping () -> Content) {
        self.content = content
    }

    func makeUIViewController(context: Context) -> UINavigationController {
        let host = UIHostingController(rootView: content())
        let nvc = UINavigationController(rootViewController: host)
        return nvc
    }

    func updateUIViewController(_ uiViewController: UINavigationController, …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

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

SwiftUI - ForEach 是否有 endIndex 或 lastindex?

我正在使用 ForEach 创建一个循环。但是,我想根据循环计数有条件地渲染一个 Rectangle 。例如,如果最后一次循环迭代,则不要渲染矩形。

什么是正确的语法?

我正在寻找这样的东西(非工作伪代码)

ForEach(arrayOfThings, id: \.title) { thing in
    // Stuff that happens on every iteration of loop

    // Conditional section
    if (thing.endIndex-1) {
        Rectangle()
        .frame(width: 100, height: 1, alignment: .bottom)
        .foregroundColor(Color("666666"))
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道有一些类似的东西,for (offset, element) in array.enumerated() { }但你不能在视图中使用它们。我想知道 ForEach 中是否有一个方便的功能来解决这个需求?

目前我正在这样做以解决方法:

ForEach(0..<arrayOfThings.count) { i in
    // Stuff that happens on every iteration of loop

    // Conditional section
    if (i = self.arrayOfThings.count-1) {
        Rectangle()
        .frame(width: 100, height: 1, alignment: .bottom)
        .foregroundColor(Color("666666"))
    } …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

6
推荐指数
2
解决办法
2055
查看次数

使用无法访问的View Controllers作为标签的不良做法?

我正与一个拥有大型故事板的项目的多个人合作.为了使这个故事板更易于导航,我们考虑添加带有大UILabel的View Controllers来显示您正在查看的部分.

像这样: 在此输入图像描述

我收到警告""InfoLabel"无法访问,因为它没有入口点,并且......"但是项目仍在运行.

无法访问的View控制器会发生什么情况,以这种方式使用它们会有害吗?

编辑:我们不同时在这个项目上工作,所以合并对我来说不是问题.

xcode ios xcode-storyboard

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

标签 统计

swiftui ×3

ios ×2

swift ×2

xcode ×1

xcode-storyboard ×1