これはたくさん尋ねられますが、私はここで他の多くのソリューションを試してみました。Swift:ウィンドウの階層に表示されていないビュー
私はカウントダウンするクラスを持っており、カウントダウンの最後に新しいビューが始まります。ここで
はカウントダウンクラスです:
import Foundation
import UIKit
class CountdownController: UIViewController {
// MARK: Properties
@IBOutlet weak var countDownLabel: UILabel!
var count = 3
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
func update() {
if(count > 0) {
countDownLabel.text = String(count--)
}
else {
self.performSegueWithIdentifier("goestoMathTest", sender: self)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: Actions
}
とMathTestControllerを示した後に来るのエラーは次のとおりです。
2016-05-26 23:43:48.579 TraderMathTestiOS[18654:951105] Warning: Attempt to
present <TraderMathTestiOS.MathTestController: 0x7fca824be7d0> on
<TraderMathTestiOS.CountdownController: 0x7fca824b9d70> whose view is not in
the window hierarchy!
**編集:だから私はいくつかのことを変更し、別のを試してみましたが、I私は問題を絞り込んだと思う。私は、timerをviewDidLoad()に変更し、リピートを 'false'に変更しました。そして、MathTestControllerが1秒後に表示され、警告が表示されません。ここで変更したコードは次のとおりです。
override func viewDidLoad() {
super.viewDidLoad()
var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("update"), userInfo: nil, repeats: false)
}
func update() {
self.performSegueWithIdentifier("goestoMathTest", sender: self)
if(count > 0) {
countDownLabel.text = String(count--)
}
else {
self.performSegueWithIdentifier("goestoMathTest", sender: self)
}
}
私はタイマーがMathTestControllerが呼び出された後もCountdownControllerに繰り返し続けるため、エラーが現れる理由があると思います。誰も私の元の機能(3、2、1 'を数えるタイマー)をエラーなく取得する方法を知っていますか?何とかタイマーを殺す必要があるのでしょうか?
あなたはそのログメッセージの先頭を切り落としたと思われます。それの前にラインがありましたか? –
@kurtRevisあなたが正しいです、私はフルテキスト – Milap
を表示するためにエラーを編集したので、一度タイマーを開始します。 CountDownControllerのviewDidAppearの後に、showUp MathTestControllerにsegueを3回実行しています。 MathTestControllerを表示している瞬間、CountDownControllerのビューはwindowHierarchyにありません。あなたはそれからセグーインしています。私はそれが問題だと思う。 –