这个问题已经有了答案:
Swift 2 to 3 Migration for prepareForSegue [duplicate]
1个答案
导入avfoundation
导入uikit
class RecordSoundsViewController: UIViewController, AVAudioRecorderDelegate{
@IBOutlet weak var recordButton: UIButton!
@IBOutlet weak var recordingLabel: UILabel!
@IBOutlet weak var stopRecordingButton: UIButton!
var audioRecorder: AVAudioRecorder!
override func viewDidLoad() {
super.viewDidLoad()
stopRecordingButton.isEnabled = false
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func recordAudio(_ sender: AnyObject) {
print("The record button was pressed!")
recordingLabel.text = "Recording in Progress"
stopRecordingButton.isEnabled = true
recordButton.isEnabled = false
let dirPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask, true)[0] as String
let recordingName = "recordedVoice.wav"
let pathArray = [dirPath, recordingName]
let filePath = NSURL.fileURL(withPathComponents: pathArray)
print(filePath)
let session = AVAudioSession.sharedInstance()
try! session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try! audioRecorder = AVAudioRecorder(url: filePath!, settings: [:])
audioRecorder.delegate = self
audioRecorder.isMeteringEnabled = true
audioRecorder.prepareToRecord()
audioRecorder.record()
}
@IBAction func stopRecording(_ sender: AnyObject) {
print("Recording was stopped")
recordingLabel.text = "Tap to Record"
recordButton.isEnabled = true;
stopRecordingButton.isEnabled = false
audioRecorder.stop()
let audioSession = AVAudioSession.sharedInstance()
try! audioSession.setActive(false)
}
override func viewWillAppear(_ animated: Bool) {
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "stopRecording") {
let playSoundsVC = segue.destination as! PlaySoundsViewController
let recordedAudioURL = sender as! NSURL
playSoundsVC.recordedAudioURL = recordedAudioURL
}
}
func audioRecorderDidFinishRecording(recorder: AVAudioRecorder, successfully flag: Bool) {
print("\n Av audio recorder has finished \n")
if flag{
self.performSegue(withIdentifier: "stopRecording", sender: audioRecorder.url)
}else{
print("Saving the audio file was unsucessfull")
}
}
}
当我试图重写prepareForSegue函数时,它抛出一个错误,指出超类没有重写的方法。
最佳答案
在swift 3中,方法的签名是
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
了解自己的方法是注释掉整个方法并重新键入前几个字符(
prep
)。代码完成将帮助您。关于swift - 无法覆盖prepareForSegue函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39946754/