2016-08-11 13 views
0

デリゲートプロトコルと別のinitクラスファイルを使用して、1つのswiftファイルから別のビューコントローラに情報を渡そうとしています。私が転送したい変数を呼び出すと、私の問題が発生し、それはゼロとして表示されます。私は、saveButtonがタップされたときに、1つのswiftファイルから別のswiftファイルにageDescriptionを渡すことができるようにします。私は変数を呼び出すことができるように私が何を変えることができるのだろうかと思っていました。スウィフトファイル間で情報を渡すことができません

最初のビューコントローラは

@IBAction func ageChanged(sender: UISegmentedControl) { 
    switch age.selectedSegmentIndex { 
    case 0: 
     print("Under 18") 
     var ageDescription = "under 18" 
     let data = Data(ageData: ageDescription) 

    case 1: 
     print("Over 18") 
     var ageDescription = "over 18" 
     let data = Data(ageData: ageDescription) 
    case 2: 
     print("Strictly over 21") 
     var ageDescription = "strictly over 21" 
    let data = Data(ageData: ageDescription) 
    default: 
     print("IDK") 
    } 

} 

他のビューコントローラ

@IBAction func saveButtonTapped(sender: UIBarButtonItem) { 
    func getData(data: Data) { 
     print(data.ageData) 
    } 

答えて

0

あなたはprepareForSegueオーバーライドを使用することができます。

あなたがセグしている他のVCに変数を作成し、オーバーライドで割り当てるだけです。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 

    // store the instance of Other view controller 
    let destinationVC = segue.destinationViewController as OtherVCclassName 
    destinationVC.variableInNewVC = self.ageDescription 
} 

また、メソッド外のageDescription変数をグローバルとして宣言する必要があります。

+0

Iに準拠しますprepareForSegueのオーバーライドをOtherVCに入力しましたが、self.ageDescriptionは認識されません。おそらく私はグローバル変数を正しく設定していないでしょうか?最初のVCで[var ageDescription:String = String()]を初期化しました。私がSwiftを初めて知りましたので、あなたの忍耐力に感謝します。 – Kevin

+0

View ControllerのSegueメソッドを、そのsegueを実行しているボタン、つまりあなたが来ていない、行っていないボタンで上書きしたいとします。そして、クラス内の変数宣言を確認してください。 – TheValyreanGroup

+0

あなたがそれを理解できない場合は、クラス名を掲示してください。私はあなたがそれを行うのに必要な正確な方法で私の答えを編集します。 – TheValyreanGroup

1

あなたがデータにアクセスしたいあなたのビューコントローラでこの

protocol ageDescriptionDelegte { 

    func sendageDescriptiongetData(data: Data) 
} 
class ViewController: UIViewController { 
weak var delegate: PassDateDelegte? 
override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 
    } 

@IBAction func saveButtonTapped(sender: AnyObject) { 
    self.delegate?.sendageDescriptiongetData(ageDescription)//pass your age description 

    } 
} 

ようViewControllerを上にデータを取得するするクラスのプロトコルを作成するには、プロトコル

extension ViewController2: ageDescriptionDelegte { 

func sendageDescriptiongetData(data: Data) { 
print(data)// this will give you the age description 
    } 
} 
関連する問題