内のインスタンスに送信された私は2つの画面があり、非常に単純なアプリケーションを構築し始めました。最初の2つのUIボタンがあります。 1つのボタンは、最初のView Controller(ViewController.swift)の下のコードを使用してランダムなサウンドを再生し、もう1つのボタンはモーダルに第2の画面を表示します。UIButton認識されていないセレクタが新しいのViewController
2番目の画面上に2つのUIbuttons 1最初の画面に戻り、別のランダムな音と他のを再生するためにもあります。最初の画面上のランダムな音を再生する
は完璧に動作します。私はブランドの新しいのViewControllerを作成している第2のスクリーンのために
はPageOneViewController.swiftと呼ばれ、クラスがIBに正しく割り当てられていることを確認しました。この第2のビューコントローラは、競合および混乱を避けるために名前の変更を除いて、第2ページのコードのカーボンコピークローンを含む。しかし、この2番目のページでサウンドを再生しようとすると、認識できないセレクタエラーが発生し、その理由がわかりません。
次のようにエラーメッセージは次のとおりです。
2016-10-17 18:04:57.749 NewApp[28750:2719569] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '- [NewApp.PageOneViewController buttonPressed2WithSender:]: unrecognized selector sent to instance 0x7fe79070b8a0'
そして、この行(私は多くの助けではありません実現している)上で停止:私は経由で手動ボタンを接続してい
class AppDelegate: UIResponder, UIApplicationDelegate {
「タッチアップインサイド」をタッチメソッドとして使用することができます。
私はこれをまったく頭に入れることはできません。古き良きObjective-C時代に、私はこの問題に遭遇しました。 ctlyまたはサウンドファイルの1つがバンドルから抜けていましたが、何度も何度も何度もチェックしたことがあり、何が起こっているのか分かりません。
ViewController.swiftのためのコード:PageOneViewController.swiftため
import AVFoundation
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var mainButton1: UIButton!
var arrayOfSounds = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44",
"45", "46", "47", "48", "49", "50", "51" , "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82"]
var audioPlayer : AVAudioPlayer?
func setupAudioPlayer(file: NSString, type: NSString){
let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String)
let url = NSURL.fileURLWithPath(path!)
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: url)
} catch {
print("Player not available")
}
}
@IBAction func buttonPressed(sender: AnyObject){
let range: UInt32 = UInt32(arrayOfSounds.count)
let number = Int(arc4random_uniform(range))
self.setupAudioPlayer(arrayOfSounds[number], type: "wav")
self.audioPlayer?.play()
}
}
コード:起こっている可能性が何
import AVFoundation
import UIKit
class PageOneViewController: UIViewController {
@IBOutlet weak var mainButtonNew: UIButton!
var arrayOfSounds = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44",
"45", "46", "47", "48", "49", "50", "51" , "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82"]
var audioPlayer : AVAudioPlayer?
func setupAudioPlayer(file: NSString, type: NSString){
let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String)
let url = NSURL.fileURLWithPath(path!)
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: url)
} catch {
print("Player not available")
}
}
@IBAction func buttonPressedNew(sender: AnyObject){
let range: UInt32 = UInt32(arrayOfSounds.count)
let number = Int(arc4random_uniform(range))
self.setupAudioPlayer(arrayOfSounds[number], type: "wav")
self.audioPlayer?.play()
}
}
ダブルチェックすべてがインターフェイスビルダーでリンクされています。 – ohr
完全で正確なエラーメッセージで質問を更新し、エラーの原因となっている正確な行を指摘してください。 – rmaddy
オーディオファイルを再生する前に、player.prepareToPlayを実行する必要があります。また、オプションのバインドを使用する代わりに、コード内の変数を強制的にアンラップします。 – Dasem