2017-07-06 19 views
1

こんにちは私は、私がやっていることが最良の選択肢がスウィフトであるかどうかを確認するためにここに来ました。私はviewcontroller1から提示するView Controllerを持っています。 viewcontroller2にはテキストフィールドがあり、テキストがいっぱいになると、テキストを自分のシングルトンに保存し、そのテキストをデータベースに保存し、ビューコントローラ1のuilabelsをそれらのラベルで更新するプロトコルを通じてビューコントローラ1でアクションを開始します私はビューコントローラ2を却下する。ビューコントローラ1のビューコントローラ2から関数を呼び出して、シングルトンのデータをデータベースに保存します。これはいいですか?ご不明な点がございましたら、お気軽にお問い合わせください。別のビューコントローラからのビューコントローラのトリガアクション

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

https://stackoverflow.com/a/30541063/2303865 –

答えて

0

あなたのシングルトンの唯一の目的は、データのこの部分を記録することであるならば、あなたがそれを必要としません。 VC2からVC1にデータを直接渡してから、データベースに保存してUIに表示することができます。

VC2からVC1にデータを戻す方法はいくつかあります。あなたのデリゲートは大丈夫です。また、あなたはリラックスしたセグを使うこともできます。 3つのメソッドはすべて、データを保持するシングルトンオブジェクトを必要とせずにデータを渡すことができます。さらに、VC2からデータベースに直接データを保存してから、VC1からデータを読み取ることができます。この方法では、上記の3つのオプションのいずれかが必要ではありません。データを渡す

+0

私はデータを戻していません。いったんデータが存在すると、アクションが実行されます。この質問の目的は、シングルトンについてではなく、異なるView ControllerからView Controllerのアクションを開始することでした。私は上のことをうまくやっているのですか?必要があれば私は質問に言い直すことができます – ahmed

+0

@ahmed 3つのオプションはすべてあなたが行動を起こすことを可能にします。 3つのオプションはすべて使いやすいです。デリゲートを選んだのは大丈夫です。私があなたのアプローチで間違っていると思う唯一のことはシングルトンなので、私はあなたのためにそれを言いました。それ以外に、私はあなたのデザインのために何か問題を見ることができない、それはthats :) –

関連する問題