热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

SwiftUI问题将变量传递给另一个视图

如何解决《SwiftUI问题将变量传递给另一个视图》经验,为你挑选了1个好方法。

我想将Float变量从一个视图传递到另一个新视图。

在下面的代码中,有一个称为mhzValue的Float值,该值是通过Slider设置的,滑块会更改该值,然后Text将显示在视图中。当用户点击Navigation Button来显示新视图时,我希望能够使用mhzValue并将其显示在文本框中的新视图中,并将其设置为另一个变量。

希望有道理。

请在下面查看一些示例代码。

谢谢。

克雷格

import SwiftUI
struct ContentView : View {
    @State private var mhzValue : Float = 0
    var body: some View {
        // Navigation View
        NavigationView {

            VStack{
                Text("Test Value:")
                    .font(.headline)
                    .color(.blue)
                    .padding(.leading, -180.0)

                //Get Slider Value
                Slider(value: $mhzValue, from: 1, through: 55, by: 1)
                    .padding(.horizontal)
                //Display Slider Value
                Text("\(Int(mhzValue)) Value")
                    .font(.title)
                    .fontWeight(.semibold)
                    .color(.blue)
                // Naviagtion Button and send value of mhzValue to new View
                NavigationButton(destination: NextView()){
                    Image(systemName: "plus.square.fill")
                        .foregroundColor(.white)
                        .font(/*@START_MENU_TOKEN@*/.title/*@END_MENU_TOKEN@*/)
                        .frame(width: 150.0, height: 16.0)
                        .padding(15)
                        .background(Color.red)
                        .cornerRadius(10.0)
                }
            }
        }
    }
}

// New View to show Slider Value
struct NextView : View {
    var body: some View {
        Text("Display Slider Value Here:")

    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

Christopher .. 6

使用Bindings可以很容易地做到这一点。因为mhzValue标记有@State属性包装器,所以它具有关联的Binding。因此,您可以@Binding第二个视图中声明一个变量,并使用绑定到原始变量对其进行初始化。

struct NextView : View {
    @Binding var mhzValue: Float
    ...
}

当您指定NextView为导航按钮的目的地时,将Binding传递给mhzValue。(美元符号语法是引用绑定的一种简便方法。)

struct ContentView : View {
    @State private var mhzValue : Float = 0
    ...
    NavigationButton(destination: NextView(mhzValue: self.$mhzValue)){...}
    ...
}

然后,您可以mhzValue在内部使用NextView

struct NextView : View {

    @Binding var mhzValue: Float

    var body: some View {
        VStack{
            Text("Display Slider Value Here:")
            Text("\(Int(mhzValue)) Value")
                .font(.title)
                .fontWeight(.semibold)
                .color(.blue)
        }
    }
}

你做出的任何更改mhzValueNextView将有效地改变ContentView.mhzValue



1> Christopher ..:

使用Bindings可以很容易地做到这一点。因为mhzValue标记有@State属性包装器,所以它具有关联的Binding。因此,您可以@Binding第二个视图中声明一个变量,并使用绑定到原始变量对其进行初始化。

struct NextView : View {
    @Binding var mhzValue: Float
    ...
}

当您指定NextView为导航按钮的目的地时,将Binding传递给mhzValue。(美元符号语法是引用绑定的一种简便方法。)

struct ContentView : View {
    @State private var mhzValue : Float = 0
    ...
    NavigationButton(destination: NextView(mhzValue: self.$mhzValue)){...}
    ...
}

然后,您可以mhzValue在内部使用NextView

struct NextView : View {

    @Binding var mhzValue: Float

    var body: some View {
        VStack{
            Text("Display Slider Value Here:")
            Text("\(Int(mhzValue)) Value")
                .font(.title)
                .fontWeight(.semibold)
                .color(.blue)
        }
    }
}

你做出的任何更改mhzValueNextView将有效地改变ContentView.mhzValue


真是太好了……谢谢……正如我在上面提到的,我在回忆时遇到了困难……我想我永远都不会掌握它。因此,我将依靠像你这样的人为你提供持续的帮助。谢谢..克雷格。
推荐阅读
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 在Swift编程中,派生类中重写方法时调用其父类的同名方法是一种常见的做法。然而,如果不正确地处理这种调用,可能会导致程序崩溃。本文详细分析了这一问题的根源,并提供了有效的解决策略,帮助开发者避免此类错误。例如,在一个自定义的`ViewController`类中继承自`UITableViewController`时,如果重写了某个方法而未恰当调用父类的实现,就可能引发运行时异常。通过本文的指导,读者将能够更好地理解Swift中的方法重载机制,确保代码的稳定性和安全性。 ... [详细]
  • 我正在尝试使SwiftUI中的按钮在文本旁边显示图像。但是,即使不在按钮中时图像 ... [详细]
  • 我正在尝试获取日历事件和提醒,但有些却不返回事件,提醒,日历,事件源的 ... [详细]
  • [Swift]LeetCode688. “马”在棋盘上的概率 | Knight Probability in Chessboard
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤ ... [详细]
  • python l类 移除一个元素_Python 基础知识全篇列表元素移除操作
    现在我们已经知道列表是一种动态的数据结构。我们可以定义一个空的列表,然后动态的添加元素。但是真正的动态不光是能动态添加数据,还要能在不需要元素的时候&# ... [详细]
  • 导读:本文来自SwiftGG翻译组,作者@walkingway基于苹果Swift官方博客中TedKremenek所撰写的“Swift2.2Released!”文章进行了关于Swift2. ... [详细]
  • 项目地址:github.comDanie1sDNS…DNSPageViewDNSPageView一个纯Swift的轻量级、灵活且易于使用的pageView框架 ... [详细]
  • iOS——应用内调用Face ID、Touch ID
    注意到很多iOS非原生应用都在应用内调用了FaceID,以来辅助登陆和进行隐私操作的确认,下面是如何调用FaceID或TouchID。获取用户隐私权限 ... [详细]
  • 搜索栏算是UI中很简单的一个操作了,拖一个搜索栏上来。   搜索栏中比较重要的属性是占位符,也就是图中右侧的Placeholder,比如输入“请输入关键字”,显示如下: ... [详细]
  • 1.切换Xcode版本假如本地有2个Xcode,切换命令如下sudoxcode-select--switchUsersyushu.lxysoftwareXcode.appConte ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
author-avatar
爵士723
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有