2017-01-17 2 views
3

모든 과목에서 학년을 쓰기 만하면 학교에 필요한 점수를 계산하는 프로젝트를 진행하고 있습니다.UIPickerView는 segue없이 데이터를 전송합니다

나는이 UIPickerView를 사용하여 사용자에게 등급을 알려줍니다. 그런 다음 변수에 저장합니다. 하지만 segue없이 다른 viewcontroller 변수를 보낼 수 없습니다 및 segues 사용하지 않는 싶습니다. 어떻게해야합니까?

이 하나 subjekt 내의 ViewController 수 있습니다 :

segues를 사용하여 뭐가 문제

import UIKit 

class Q_A_Religion: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 


@IBOutlet weak var label: UILabel! 
@IBOutlet weak var label2: UILabel! 
@IBOutlet weak var picker: UIPickerView! 


let A: Double = 20.0 
let B: Double = 17.5 
let C: Double = 15.0 
let D: Double = 12.5 
let E: Double = 10.0 
let F: Double = 0.0 



var totaltmeritvärdeIReligion: Double = 0 
//förvarar värdet av betyget som man skrivit in 

let betygsAltenativ = [" ","A", "B", "C", "D", "E", "F", "-"] 


public func numberOfComponents(in pickerView: UIPickerView) -> Int 
{ 
    return 1 
} 

public func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
{ 
    return betygsAltenativ[row] 
} 

public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
{ 
    return betygsAltenativ.count 
} 

public func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
{ 

    let BetygValt = betygsAltenativ[row] 
    label.text = betygsAltenativ[row] 


    switch (BetygValt) 

    { 


    case " ": 
     label2.text = (" ") 
     break 


    case "A": 
     label2.text = ("+ 20p") 
     totaltmeritvärdeIReligion = Double(A) 

    case "B": 
     label2.text = ("+ 17.5p") 
     totaltmeritvärdeIReligion = Double(B) 
    case "C": 
     label2.text = ("+ 15p") 
     totaltmeritvärdeIReligion = Double(C) 

    case "D": 
     label2.text = ("+ 12.5p") 
     totaltmeritvärdeIReligion = Double(D) 

    case "E": 
     label2.text = ("+ 10p") 
     totaltmeritvärdeIReligion = Double(E) 

    case "F": 
     label2.text = ("+ 0p") 
     totaltmeritvärdeIReligion = Double(F) 

    case "-": 
     label2.text = ("+ 0p") 


    default: 
     print("Inget betyg valt") 

    }//switch slutar 

    func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     let nextVC: Totaltmeritva_rde = segue.destination as! Totaltmeritva_rde 

     nextVC.Religionbetygetskickat = totaltmeritvärdeIReligion 

    } 

}// func pickerView slutar 



}//Slutet av allt 

답변

2

(그 중 일부는 스웨덴어에)? 부모 - 자식 관계에 대해 선호하는 방법입니다. 다른 방법은 다음과 같습니다

  1. 방송 NotificationCenter.default
  2. 사용에 통지 (Realm for instance)
  3. 당신이 더 SEGUE와 함께 수동으로 VC를 인스턴스화하는 경우, 당신은 전달 값을 수용 할 수있는 공유 데이터 저장소 또는 싱글 데이터를 만든 후에 스택에 올려 놓거나 루트보기 컨트롤러로 만들기 전에 데이터를 저장하십시오.
+0

제 경우에는 어느 것이 가장 좋습니까? – theswed

+0

이미 거기에 prepareForSegue가 있습니다. 작동하지 않습니까? 재정의해야합니까? performSegue를 부르시고 스토리 보드에서 끝내셨습니까? –

+0

글쎄, 내가 보낸 변수를 출력하려고 시도했지만 그다지 쓸모가 없었습니다. – theswed

관련 문제