2016-10-06 6 views
0

私は、SettingsControllerにセグメント化されたコントロールを持っています。UILabelを他のView Controllerから設定する

セグメント化されたコントロールは、温度を摂氏 または華氏で表示できます。

現在の温度を摂氏で表示する温度ラベルがあるmainViewControllerがあります。

セグメント化されたコントロールをクリックすると、温度を適切な単位に変換してmainViewControllerに表示したいと思います。 mainViewControllerで

@IBOutlet weak var temperatureUnitSegmentedControl: UISegmentedControl! 
var mainViewController : MainViewController? 

@IBAction func temperatureSegmentedControlListener(sender: UISegmentedControl) { 

     switch temperatureUnitSegmentedControl.selectedSegmentIndex 
     { 
     case 0: 
      showTemperatureInCelsius() 
     case 1: 
      showTemperatureInFahrenheit() 
     default: 
      break; 
     } 
    } 
    func showTemperatureInCelsius(){ 
     mainViewController?.setTempInCelsius() 

    } 
    func showTemperatureInFahrenheit(){ 
      mainViewController?.setTempInFahrenheit() 
    } 

私は、変換を行うと、このコードはmainViewController内の関数に当たらないとラベルの値が更新されない温度ラベルに

func setTempInCelsius(){ 
     temperatureLabel.text = "In Celsius" 
     log?.debug("Temperature Celsius\(batteryTemperatureLabel.text)") 
    } 

    func setTempInFahrenheit(){ 
     temperatureLabel.text = "In Fahrenheit" 
     log?.debug("Temperature Fahrenheit\(batteryTemperatureLabel.text)") 
    } 

を更新したいです。

ご協力いただければ幸いです。ありがとうございます

+0

はじめに:変数mainViewControllerをどこで設定しますか?また、あなたが表示する最初のコードブロックが 'SettingsController'にあると仮定します。私の推測では、単にあなたが望むコントローラーに変数を設定することはないでしょう。ああ、それが親の場合、varを弱くすることを忘れないでください。そうしないと、保持サイクルに入るでしょう。 – Gero

+0

あなたの問題を解決するリンクを確認してください。http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers – Joe

答えて

0

デリゲートまたはプロトコルを使用できます。あなたがビューを更新する必要がある場合click here

は、あなたはClick here

+0

リンクが将来切断されるか、コメント。 :) –

0

nsnotificationcenter使用することができますYoaは、単純にこのことができますUIApplication.sharedApplication().sendAction("setTempInCelsious", to: nil, from: nil, forEvent: nil)

希望のような値を設定するために、あなたの目的地のビューコントローラにアクションを送ることができます。

関連する問題