【问题标题】:SwiftUI - switch toolbar statesSwiftUI - 切换工具栏状态
【发布时间】:2019-06-24 18:20:26
【问题描述】:

目标:根据所选对象(图像、文本、形状)切换状态的工具栏

我做了什么:

iimport SwiftUI

struct ToolbarMaster : View {

    @State var showtoolbar = false
    var toolbarmaster:  [ToolbarBezier] =  []

    var body: some View {


        HStack {

            Spacer()

            VStack {

                Button(action: {self.showtoolbar.toggle() }) {
                    Image(systemName: "gear")
                    }
                    .padding(.leading)

                Image("dog")

                Text("Im a text")
                    .font(.largeTitle)
                    .color(.black)


                Path(ellipseIn: CGRect(x: 0, y: 0, width: 100, height: 100))
                .fill(Color.black)

            }


            NavigationView {

                ZStack {

                    ToolbarBezier()

                    ToolbarArtwork()





                }


                .navigationBarTitle(Text("Toolbar Name"), displayMode: .inline)
                }


                .frame(width: 320.0)

        }

    }

}

我的结果:

如何在选择不同对象的同时更改状态?

我需要以动态的方式做(不是硬编码),这样当任何对象是图像时,就会显示Image Toolbar,等等。

【问题讨论】:

  • “选中”是什么意思?您是否希望在任何这些对象被点击时改变工具栏的状态?
  • 是的。就像,每当点击文本时,都会显示文本工具栏状态。每当点击任何图像时,图像工具栏都会显示

标签: swiftui xcode11


【解决方案1】:

我会这样做:

  • 为工具栏的每个状态添加一个 @State 布尔变量
@State private var textSelected = false
  • .onTap 事件添加到场景中的每个“活动”视图:
Text("Tap me!")
    .tapAction {
        self.textSelected = true
    }
  • 根据“状态”变量更改工具栏的外观
if self.textSelected {
   self.showTextToolbarContent() 
}

当然,showTextToolbarContent() 是一个返回 some View 的本地函数,其中包含为文本选择量身定制的工具栏内容。

这显然只是一个简单的例子。在您的实际实现中,您可能会为“选择”状态使用一个布尔数组,为当前选择的视图使用另一个状态变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多