質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

908閲覧

【swift】Timer で5秒後に画面遷移させたい

kikujiroupurin

総合スコア1

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/11/10 19:21

5秒後に次の画面に遷移したい

swift初心者です。
練習でアプリ制作中ですが、Timerを使用し画面を遷移させたいもののエラーを解消できません。
初めての質問で質問の方法も不慣れで申し訳ありませんがよろしくお願いします。

swift

1import UIKit 2 3class ThirdViewController: UIViewController { 4 5 override func viewDidLoad() { 6 7 8 super.viewDidLoad() 9 let timer = Timer( 10 timeInterval: 0.5, 11 target: self, 12 selector: #selector(test), 13 userInfo: nil, 14 repeats: false)

試したこと

selector()の()には"chengeView"で画面遷移の指示となるのでしょうか?
[Argument of '#selector' does not refer to an '@objc' method, property, or initializer]のエラーが出てしまいます。

補足情報(FW/ツールのバージョンなど)

Xcode Version 13.0 (13A233)です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/11/10 21:25

#selector() の括弧の中にはメソッド名が入ります。test メソッドはどう書きましたか?
kikujiroupurin

2021/11/12 01:25

()の中をchengeViewと変更しました。 selector: #selector(self.chengeView), ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @objc func chengeView(){ //print("chengeView") self.performSegue(withIdentifier: "toForth", sender: nil) //print("after") }
kikujiroupurin

2021/11/12 01:25

こちらで問題なく動作しました!
guest

回答1

0

ベストアンサー

Swiftで◯◯秒後といった処理の場合は DispatchQueue.main.asyncAfter が良いですよ

// 5秒後に実行 DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { // 画面遷移 }

参考
https://tech.playground.style/swift/dispatch/

投稿2021/11/11 09:53

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kikujiroupurin

2021/11/12 01:35

ご回答、参考ありがとうございます。 let mainQueue = DispatchQueue.main を定義しておいて、viewDidLoad内で上記を追加すれば良いのでしょうか?GCDの参考をみたものの、組み立て方がよくわからず・・すみません。
退会済みユーザー

退会済みユーザー

2021/11/12 06:15

処理内容によりますが viewDidLoad内で画面遷移を行いたいならそうなるんじゃないんですかね
kikujiroupurin

2021/11/16 05:27

ありがとうございます!こちらの方がシンプルですね。今回は使用しなかったものの、後学のためにこちらをベストアンサーにさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問