私は私の迅速なアプリケーションで2つのビューを持っています。私は以下のようにセグを実行しています。Swift Timer.scheduledTimer()が機能しません
ViewController.swift -----------------> GameViewController.swift
ViewController.swiftからもGameViewController.swiftに渡さGameViewController値のアレイをロード
タイマーは、私はタイマーを初期化し、それを介してメソッドを呼び出そうとしましたが、それは動作しませんGameViewController.swift
に初期化する必要があります。
以下は私のコードスニペットです。
ViewController.swift
func signIn(difficultyLvl:String){
let username = usernameTxt.text
let password = passwordTxt.text
let url = URL(string: "http://192.168.1.106/speed/scoreBoardController.php?username="+username!+"&password="+password!+"&action=SIGNIN")
let task = URLSession.shared.dataTask(with: url!) {(data, response, error) in
let isPassed = String(data: data!, encoding:.utf8)?.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
var gameViewControllerParams = [Int: [String: String]]()
gameViewControllerParams[0] = ["userId" : isPassed!]
gameViewControllerParams[1] = ["difficultyLvl" : difficultyLvl]
if(isPassed != "null"){
self.performSegue(withIdentifier: "gotoGame", sender: gameViewControllerParams)
}
}
task.resume()
}
GameViewController.swift
class GameViewController: UIViewController {
var gameViewControllerParams = [Int: [String: String]]()
override func viewDidLoad() {
super.viewDidLoad()
let _ = Timer.scheduledTimer(timeInterval: 1.0, target:self, selector: #selector(self.setCalculationLs), userInfo:nil,repeats: true)
}
func setCalculationLs(){
print("Timing")
}
}
タイマーにターゲットオブジェクトを設定することが問題です。どんなsuggetions。ありがとう –
'GameViewController'に配列を送るのではなく、' prepare(for:sender:) 'で配列を送ります。 'sender'パラメータは' self 'でなければなりません – paper1111
問題は何になりますか? GameViewControllerがロードされていますか? viewDidLoad()は呼び出されていますか?配列の受け渡しはタイマーの問題にどのように関連していますか? - 一般的に、タイマーコードは機能するはずです。 –