我试图将一些变量发送到另一个视图控制器,我正在编程触发SEGUE。由于某些原因,这些变量永远不会传递,并且打印说明永远不会运行。当我尝试检索变量时,我的下一个视图控制器简直就是零且未分配。我具有以下功能,它实际上触发了SEGUE,并且在视图控制器的底部Preparforsegue:
func action(gestureRecognizer:UILongPressGestureRecognizer) {
if (lpgr!.state == UIGestureRecognizerState.Began) {
print("Began")
let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
let documentsDirectory: AnyObject = paths[0]
let format = NSDateFormatter()
format.dateFormat="yyyy-MM-dd-HH-mm-ss"
let dataPath = documentsDirectory.stringByAppendingPathComponent("/video-(format.stringFromDate(NSDate())).mp4")
let url = NSURL(fileURLWithPath: dataPath)
videoOutput!.startRecordingToOutputFileURL(url, recordingDelegate: self)
print("(url)")
NSUserDefaults.standardUserDefaults().setURL(url, forKey: "videoURL")
NSUserDefaults.standardUserDefaults().synchronize()
}
if (lpgr!.state == UIGestureRecognizerState.Ended) {
print("Ended")
videoOutput!.stopRecording()
url = NSUserDefaults.standardUserDefaults().URLForKey("videoURL")!
videoData = NSData(contentsOfURL: url!)!
print(videoData)
presentViewController(PostViewController(), animated: true, completion: nil)
}
}
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "segueTest") {
var svc = segue!.destinationViewController as! PostViewController;
print("Variables saved")
svc.VideoData = videoData
svc.Url = url
}
}
您的preparforsegue从未被调用,因为您使用presentViewController()函数。它只是按下另一个视图控制器。SEGUE是情节板中两个视图控制器之间的链接,因此您可以在View Controller之间的故事板中添加一个SEGUE,将ID设置为SEGUE并使用PerformsegueWithIdentifier(" MysegueId",Sender:NIL)。