动态设置SwiftUI NavigationBarItems?

问题描述

如何动态更改SwiftUI导航栏项目?

我在NavigationView中有一个TabView,我希望根据所选的选项卡更改导航栏项。但是,我很难确定如何使用.onAppear()进行更改,即使您应该这样做也是如此。

我的代码当前的布局如下:

var body: some View {
        NavigationView {
            TabView {
                contentWithNavigationButtons()
                    .tabItem {
                        Image(systemName: "house")
                        Text("Buttons")
                    }
                
                contentWithoutNavigationButtons()
                    .tabItem {
                        Image(systemName: "person")
                        Text("No Buttons")
                    }
                    .onAppear {
                        //Navigation Bar Items should be removed
                    }
                
            }
            .navigationBarItems(trailing: someButton)
        }

解决方法

这是一个可能的解决方案的演示-添加选项卡的跟踪选择,并根据选项卡的选择制作按钮。经过Xcode 12 / iOS 14的测试

void CMFCReadTextToBoxDlg::OnBnClickedbtnread()
{
    ifstream MyReadFile("user.txt");
    string textRead1;
    string textRead2;
    string textRead3;
    string textRead4;

    getline(MyReadFile,textRead1);
    CString cs1(textRead1.c_str());
    SetDlgItemText(txtField1,cs1);

    getline(MyReadFile,textRead2);
    CString cs2(textRead2.c_str());
    SetDlgItemText(txtField2,cs2);

    getline(MyReadFile,textRead3);
    CString cs3(textRead3.c_str());
    SetDlgItemText(txtField3,cs3);

    getline(MyReadFile,textRead4);
    CString cs4(textRead4.c_str());
    SetDlgItemText(txtField4,cs4);
    
    
    MyReadFile.close();
    
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...