2016-04-29 9 views
2

私は基本的なことは知っていますが、これを得ることはできません。私は日付ピッカーの値を取り、それを文字列に変換し、変数に代入し、ラベルテキストを更新する関数を持っています。範囲外の変数へのアクセスSwift

私は関数の外でその変数にアクセスできるようにしたいので、prepareForSegueで使うことができます。これまで私はグローバル変数を作成し、関数が呼び出されたときにそれを更新しようとしましたが、うまくいかないように見えましたが、関数の値を返そうとしましたが、 。

機能:

func datePickerChanged(datePicker:UIDatePicker) { 
    var dateFormatter = NSDateFormatter() 

    dateFormatter.dateStyle = NSDateFormatterStyle.FullStyle 
    dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle 

    var strDate = dateFormatter.stringFromDate(datePicker.date) 
    dateTimeLabel.text = strDate 
} 

私は、関数の外にstrDateを取得したいです。どんな助けでも大歓迎です!

var aString = "" 

func doStuffWithA(inout theString: String) { 

theString = "Groovy" 
} 

doStuffWithA(&aString) // changes aString to "Groovy" 

それとも、外のプロパティを宣言することができます。

答えて

1

あなたは..あなたはこのように、メソッドは、パラメータを更新できるようにする方法にINOUTパラメータを使用することができ、さまざまな方法でこれを行うことができます方法:あなただけのセグエのためにこれをしたい場合、あなたはこのように、performSegueWithIdentifier上のオブジェクトを渡すことができます

class SomeClass { 
    var someString: String = "" 

    func doStuff() { 
     self.someString = "Groovy" 
    } 
} 

func doStuff() { 

    var aString = "Groovy" 
    performSegueWithIdentifier("someSegue", sender: aString) 

} 

// Then here you can use it and assign it as a property on the next view controller 

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

    if segue.identifier == "someSegue" { 

     guard let aString = sender as? String else { 

     return 
     } 

     let nextVC = segue.destinationViewController as! SomeVC 
     nextVC.someProperty = aString 
    } 
} 
+1

ありがとうを行うことができる方法です!私は自分でオプション2を使用しようとしていましたが、何か不足していたに違いありません。あなたのバージョンが動作します。 – m1234

0

あなたはそれが機能のうち、クラス外からアクセスできるようにしたい場合は、これはあなたが

class xyz { 

    var startDate:String? 

    func datePickerChanged(datePicker:UIDatePicker) { 
     var dateFormatter = NSDateFormatter() 
     dateFormatter.dateStyle = NSDateFormatterStyle.FullStyle 
     dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle 

     self.startDate = dateFormatter.stringFromDate(datePicker.date) 
     dateTimeLabel.text = self.startDate 
} 

} 
関連する問題