小编Ben*_*n M的帖子

在自定义UITabBarController中抑制moreNavigationController

我为项目实现了自定义UITabBar解决方案.基本上,如果有超过5个项目,我使用scrollView,允许用户滚动其他选项卡项并禁止更多按钮.在Weather Channel应用程序中可以看到类似的外观.

每个标签栏项对应于管理每个选项卡的视图堆栈的UINavigationController.我遇到的问题是,当我有超过5个标签项时,从标签5开始不能正确维护导航堆栈.似乎每次返回到该选项卡时,moreNavigationController都会杀死导航堆栈,并且您将再次进入初始页面.

我已经重写了setSelectedViewController方法,如下所示:

- (void) setSelectedViewController:(UIViewController *)selectedViewController {
    [super setSelectedViewController:selectedViewController];
    if ([self.moreNavigationController.viewControllers count] > 1) {
        self.moreNavigationController.viewControllers = [[NSArray alloc] initWithObjects:self.moreNavigationController.visibleViewController, nil];
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码将删除左侧导航按钮上的"更多"功能,但不能解决维护导航堆栈的问题.所有其他标签工作正常.我可以遍历几个视图,并在离开并返回到该选项卡后保持堆栈.我知道这是一个复杂的问题,所以如果有一些方面我可以提供清晰度,请告诉我.谢谢!

ios

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

SwiftUI:如何确定视图是在 NavigationView、Sheet 中呈现还是在根中呈现?

我正在开发一个需要自定义导航栏的项目,该导航栏将具有自定义按钮和标题样式,同时还允许主导航部分下方的附件视图。

本质上,我想抽象出根据演示风格选择自定义后退按钮的需要。如果它呈现在工作表中,我计划显示一个 X 图标。如果它被推到导航视图上,我想显示一个返回错误。如果它是根视图,我想完全隐藏该按钮。

我已经映射了presentationMode环境变量,但是当我访问该isPresented值时,我总是得到 true,即使在我的应用程序的根视图上也是如此。

以下是我正在从事的工作的总体思路:

import SwiftUI

struct CustomNavigationBar<Content>: View where Content: View {

    @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>

    private let title: LocalizedStringKey
    private let content: (() -> Content)?

    private var backButton: AnyView? {

        let button = Button(action: { self.presentationMode.wrappedValue.dismiss() }) {
            // custom image extension, just resolves to a back icon
            Image.Icons.arrowBack
        }

        if (presentationMode.wrappedValue.isPresented) {
            return AnyView(button)
        } else {
            return nil
        }
    }

    public init(_ title: LocalizedStringKey, content: (() -> Content)? = …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui swiftui-navigationview

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

标签 统计

ios ×2

swift ×1

swiftui ×1

swiftui-navigationview ×1