9

私は初心者で、メイン画面でユーザーに25分から0までのタイマーを表示するiOS用のアプリケーションを作成しようとしてUILabelいます(テキストは、を使用して毎秒更新されますNSTimer)およびUITableView(埋め込みUIViewControllerタイマーが 0 に達するたびにセルが表示されます。

したがって、私が制御するメインビューには次のUIViewControllerものがあります: - UILabel: タイマー用 - UITableView: タイマーが0に達するたびにセルを表示します - UIButton: タイマーを開始します

UITableViewユーザーがtablewViewに指を置いている限り、スクロールするとタイマーがラベルの更新を停止するという事実を除いて、すべてが正常に機能しているようです。UITableViewスクロール中にラベルのテキストが変更されない理由を誰か教えてもらえますか?

PSこの問題は、スレッドの使用方法をまだ学んでいないため、スレッドを使用していないことに関連している可能性があると思います。

4

4 に答える 4

6
updateTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(updateCurrentTime) userInfo:p repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:updateTimer forMode:NSRunLoopCommonModes];
于 2013-01-22T03:08:40.277 に答える
4

スクロール中のトラッキング実行ループモードでは、タイマーは起動しません。詳細については、実行ループモードに関するNSTimerドキュメント、またはスクロールビューでのWWDC2012セッションを確認してください。

于 2012-08-27T15:38:42.730 に答える
2

UITableview をスクロールすると、タイマーが繰り返されません。RunLoop にタイマーを追加することで、この問題を解決できます。詳細については、RunLoop についてドキュメントを確認してください。

Swift 4.1 のソリューション

self.updateTimer = Timer.scheduledTimer(timeInterval:1.0, target: self, selector: Selector(("updateFunction")), userInfo: nil, repeats: true)
RunLoop.current.add(self.updateTimer, forMode: RunLoopMode.common)
于 2018-12-12T20:45:18.373 に答える