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

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

新規登録して質問してみよう
ただいま回答率
85.50%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

2回答

449閲覧

swift - ボタンをクリックしたらAV Player View controller を呼び出したい

NorioYonezawa

総合スコア6

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

1クリップ

投稿2018/01/08 03:12

Swiftで動画再生アプリの作成をしています。
ボタンをクリックしたら、AV Player View controller を呼び出す作りにしたいと思います。

ボタン生成をコードから書けば、addTargetが使え、問題なく動くのですが、ボタンをドラッグ&ドロップで作成した場合のfunc playMovieFromProjectBundle()の呼び出し方がわかりません。ご教示いただけないでしょうか?

ボタンは、ボタンの位置を後で動かしやすくするために、コードではなく、オブジェクトで作成したいです。

よろしくお願いします。

###発生している問題・エラーメッセージ
***Value of type '(UIButton) -> ()' has no member 'addTarget'**
エラーが出ます

###該当のソースコード

@IBAction func button(_ sender: UIButton) {
button.addTarget(self, action: #selector(self.playMovieFromProjectBundle), for: .touchUpInside)
***Value of type '(UIButton) -> ()' has no member 'addTarget'**
エラーが出ます
}

@objc func playMovieFromProjectBundle() {
if let bundlePath = Bundle.main.path(forResource: "test5", ofType: "mp4") {

let videoPlayer = AVPlayer(url: URL(fileURLWithPath: bundlePath)) // 動画プレイヤーの用意 let playerController = AVPlayerViewController() playerController.player = videoPlayer self.present(playerController, animated: true, completion: { videoPlayer.play() }) } else { print("no such file") } }

###試したこと
ボタン生成をコードから書けば、addTargetが使え、問題なく稼働します。

###補足情報(言語/FW/ツール等のバージョンなど)
Swift4 Xcode 9.2

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

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

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

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

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

guest

回答2

0

自己解決

self.playMovieFromProjectBundle()  で解決しました。

投稿2018/01/21 10:20

NorioYonezawa

総合スコア6

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

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

0

@IBAction func button(_ sender: UIButton) { button.addTarget(self, action: #selector(self.playMovieFromProjectBundle), for: .touchUpInside) ***Value of type '(UIButton) -> ()' has no member 'addTarget'** エラーが出ます }

この中で、button.addTargetをする必要はないかと思います。
IBActionで繋いだ際に、自動的にaddTargetされて、buttonタップ時に、buttonメソッドを呼ぶようにできているのではと思われます。

イメージ説明

投稿2018/01/08 08:39

komo_ta

総合スコア275

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

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

NorioYonezawa

2018/01/14 08:09

返信が遅くなりました。ありがとうございます。この処理のところで、どのようにメソッドを呼び出すのかがわかりませんでした。self.playMovieFromProjectBundle() で良いかと思ったのですが、Fixの連続で結局できなかったです。
NorioYonezawa

2018/01/21 10:20

こちらの self.playMovieFromProjectBundle()  で解決しました。 エラーは他の箇所でした。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問