嗨,我在这里寻求建议,看看我正在做的是最好的选择是否适合迅捷。我有一个视图控制器,我从viewcontroller1呈现。在viewcontroller2中我有一个文本字段,当文本已满时,我将文本保存到我的单例并通过协议在视图控制器1中启动一个操作,将该文本保存到数据库并使用这些标签更新视图控制器1中的uilabels然后我解雇了视图控制器二。我从视图controller1中的视图controller2启动一个函数,将数据从单例保存到数据库。这很好吗。如果您有任何问题随时问。
class ViewController1: UIViewController, EditProtocol{
var label = UIlabel()
@IBAction func Editname(_ sender: Any) {
if let vc = storyboard.instantiateViewController(withIdentifier: "ViewController2Identifier") as? ViewController2{
vc.controller = self
vc.modalPresentationStyle = .custom
vc.modalTransitionStyle = .crossDissolve
vc.setViewControllers([ProductInformation], animated: true)
self.present(vc, animated:true, completion: nil)
}
}
func SaveName() {
label.text = singleton.shared.text
}
protocol EditProtocol {
func SaveName()
}
class ViewController2: UIViewController{
var controller: EditProtocol?
@IBOutlet weak var Name: UITextField!
@IBAction func Back(_ sender: AnyObject) {
singleton.shared.text = Name.text
controller?. SaveName()
self.dismiss(animated: true, completion: nil)
}
}
答案 0 :(得分:0)
如果您的单身人士的唯一目的是记录这段数据,那么您不需要它。您可以直接将数据从VC2传递到VC1,然后保存到数据库并在UI上显示。
有几种方法可以将数据从VC2传回VC1。你的代表没问题,你也可以使用unwind segue或NotificationCenter(我最喜欢的)。这三种方法都允许您传递数据而无需单个对象来保存数据。更重要的是,您可以将数据从VC2直接保存到数据库,然后从VC1读取数据。这样,您甚至不需要上面三个选项中的一个来传递数据