将 segued 数据存储在单独的视图控制器上(swift 4)
Posted
技术标签:
【中文标题】将 segued 数据存储在单独的视图控制器上(swift 4)【英文标题】:store segued data on a separate viewcontroller (swift4) 【发布时间】:2017-10-25 15:45:44 【问题描述】:我的代码从文本字段中获取文本,然后转到单独的视图控制器。问题是它只能存储 1 个 segue 条目。每次按下按钮时,新的都会替换旧的。如何在 vc2 上将每个新条目存储到 segue。
VC
import UIKit
class ViewController: UIViewController
@IBOutlet var txt: UITextField!
override func viewDidLoad()
super.viewDidLoad()
@IBAction func pressButton(_ sender: Any)
if txt.text != ""
performSegue(withIdentifier: "segue", sender: self)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
let secondController = segue.destination as! twoViewController
secondController.myString = txt.text!
两个VC
import UIKit
class twoViewController: UIViewController
@IBOutlet var labelSmtih: UILabel!
var myString = String()
override func viewDidLoad()
super.viewDidLoad()
labelSmtih.text = myString
【问题讨论】:
【参考方案1】:例如,如果第二个视图控制器是 UISplitViewController,您应该能够将按钮的文本附加到标签,方法是:
@IBAction func pressButton(_ sender: Any)
if txt.text != ""
performSegue(withIdentifier: "segue", sender: self)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
let secondController = segue.destination as! twoViewController
secondController.myString += txt.text!
如果你真的有一个单独的视图控制器,一旦你回到第一个 VC,它可能会丢失数据。在这种情况下,我建议您将标签的当前文本保存在第二个 VC 的 viewWillDisappear 上,然后在第一个 VC 上的 prepareforsegue 函数中检索它。更多信息在这里:Swift: How to store user preferences?
【讨论】:
以上是关于将 segued 数据存储在单独的视图控制器上(swift 4)的主要内容,如果未能解决你的问题,请参考以下文章
我可以通过 Segues 在视觉上完全“绕过”视图控制器吗?
使用 IBAction 将数据传递到另一个视图控制器而无需 segue swift