我正致力于创建iOS应用程序。当我点击我的"登录"按钮,服务器通过将JSON发送回应用程序来响应。我知道信息正在被发回,因为我可以从LoginVC打印信息。
登录成功后,我想将服务器响应"传递到应用程序"。截至目前,我正在使用以下两行来进入应用程序":
let TabBarViewControllerObejct = self.storyboard?.instantiateViewControllerWithIdentifier("TabBarViewController")
self.navigationController?.pushViewController(TabBarViewControllerObejct!, animated: true)
我希望Tab Bar Controller中的所有视图都可以使用该响应,因此我尝试为TabBarVC创建一个类并添加一个属性,但是在响应期间为它赋值时,它会失败并且不能找到该物业。
我还尝试将navController推送到TabBarVC中的第一个视图,但后来我丢失了标签栏。
我尝试使用上面的语句来实例化TBVC,然后将该类的属性设置为响应字符串。我无法正确分配,因此无法根据需要从内部视图中访问它。
我创建了一个名为TabBarController的Swift文件,它是UITabBarController的子类,我指出XIB使用该类。我在该类中创建了一个响应变量,并尝试在上述语句之间设置该属性。
由于我实例化了UIViewController而不是UITabBarController,因此TabBarViewControllerObject.responseString = value
没有用。我尝试将第一个语句更改为包含as! TabBarController
,然后更改不匹配类型的pushViewController
函数。
答案 0 :(得分:0)
经过大量研究后,很明显我试图从一种视图到另一种视图中泄漏相当不安全的内存。最终的决定是改变策略以使用某种形式的存储来放置响应字符串,然后从另一个视图中从该存储中获取。
我在NSUserDefaults
上发现了一些信息,这些信息(对于我的情况)完美无缺。
以这种方式将某些东西保存到商店中:
import Foundation
使用NSUserDefaults对象
var defaults = NSUserDefaults.standardUserDefaults()
初始化默认值
self.defaults.setObject(VALUE_TO_STORE, forKey: "KEY_NAME")
存储一个包含KEY_NAME密钥且值为VALUE_TO_STORE的字符串。
然后在另一个视图中以相同的方式初始化默认值,并且当您想要检索该值时使用
defaults.stringForKey("KEY_NAME")!
希望这可以帮助任何一个像我一样陷入困境的人。