swiftui将变量传递到另一个视图
Posted
技术标签:
【中文标题】swiftui将变量传递到另一个视图【英文标题】:swiftui passing variable into antoher view 【发布时间】:2020-02-02 16:43:27 【问题描述】:嘿,您可以在下面找到我的源代码。 我想做的是:
提取 Json 后,我希望它可以在其他视图中访问... 请帮帮我...
我的意思是提取的值:“\n (users.Name)”
所以我只想将响应数据放到另一个视图中...
struct User: Codable
let Name: String
let url = URL(string: "http://192.168.178.26/iso/loginserv.php")
guard let requestUrl = url else fatalError()
var request = URLRequest(url: requestUrl)
request.httpMethod = "POST"
let postString = "user=\(self.user)&pass=\(self.pass)";
request.httpBody = postString.data(using: String.Encoding.utf8);
let task = URLSession.shared.dataTask(with: request)
(data, response, error) in
if let error = error
print("Error took place \(error)")
return
guard let data = data else return
do
let users = try JSONDecoder().decode(User.self, from: data)
print("Response data Name: \n \(users.Name)")
if !(data.isEmpty)
self.signedIn = true
catch let jsonErr
print(jsonErr)
task.resume()
All i want is to get the marked thing into another view...
【问题讨论】:
一个重要的问题是:您希望这个新视图如何工作?您是希望视图进行导航推送,例如点击详细信息指示器,还是希望在现有视图上叠加自定义视图? 【参考方案1】:你可以做的是使用单例设计模式。
基本上,您创建一个仅实例化一次的类,具有全局静态属性。该属性将用于将信息从一个视图传递到另一个视图。
所以,首先创建一个 Singleton 类(作为一个简单的 Swift 文件)并定义一个静态实例,如下所示:
class Singleton
static let instance = Singleton()
private init()
现在,创建并初始化要在视图之间共享的变量,例如字符串name
:
class Singleton
static let instance = Singleton()
private init()
var name = ""
现在,在您的代码中,将 users.Name
归因于它:
do
let users = try JSONDecoder().decode(User.self, from: data)
print("Response data Name: \n \(users.Name)")
Singleton.instance.name = users.Name
if !(data.isEmpty)
self.signedIn = true
catch let jsonErr
print(jsonErr)
现在,要在另一个视图中访问此信息,只需使用 Singleton.instance.name
。
【讨论】:
这很长很复杂【参考方案2】:使用这样的结构
struct structFittings
static var collectedWorks: Bool = false
static var collected: String = "notcollected"
static var failclicked: Bool = false
这样访问
structFittings.collectedWorks
应用中的任何位置
【讨论】:
以上是关于swiftui将变量传递到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章
如何将一个 SwiftUI 视图作为变量传递给另一个视图结构