我正在使用相机应用程序,其中相机视图以模态显示.完成裁剪后.我执行一个放松的segue MainPageViewController
.(请看截图)
我的展开功能MainPageViewController
如下:
@IBAction func unwindToMainMenu(segue: UIStoryboardSegue) {
self.performSegueWithIdentifier("Categories", sender: self)
}
Run Code Online (Sandbox Code Playgroud)
其中,"类别"是从推SEGUE标识符MainPageViewController
到CategoriesTableViewController
.
程序进入unwindToMainMenu
函数但不执行push segue.知道如何解决这个问题吗?
注意:我发现了同样的问题,但答案建议改变故事板结构.
我使用以下代码将图像发布到我的服务器.
@IBAction func postButtonPressed(sender: UIButton) {
let task = NSURLSession.sharedSession().dataTaskWithRequest(createRequest("http://xx.xx.xxx.xxx/xxxx/"), completionHandler: {
data, response, error in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
})
task.resume()
}
Run Code Online (Sandbox Code Playgroud)
在哪里createRequest()
创建所需的NSURLRequest对象.
当我使用模拟器时,这很好用.问题是,当我在iPhone上运行我的应用程序时,我收到以下错误.
Error Domain=NSURLErrorDomain Code=-1001 "The operation couldn’t be completed. (NSURLErrorDomain error -1001.)" UserInfo=0x155e71f0 {NSErrorFailingURLKey=http://xx.xxx.xxx.xxx/xxxx/, NSErrorFailingURLStringKey=http://54.148.156.117/query/, NSUnderlyingError=0x155674d0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1001.)"}
Run Code Online (Sandbox Code Playgroud)
我了解到这个错误是超时错误.重新启动应用程序或手机没有帮助.此外,我已经尝试从Web浏览器将图像发布到我的服务器,它没有问题.
可能导致此超时错误的原因是什么?
编辑:当我监控我的网络活动时,我意识到应用程序发送10 MB数据,即使我发送的图像是0.1 MB.
我有以下功能从服务器下载图像;
func getImageFromServerById(imageId: String) -> UIImage? {
let url:String = "https://dummyUrl.com/\(imageId).jpg"
var resultInNSDataformat: NSData!
let task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: url)!) {(data, response, error) in
if (error == nil){
resultInNSDataformat = data
}
}
task.resume()
return UIImage(data: resultInNSDataformat)
}
Run Code Online (Sandbox Code Playgroud)
在返回图像之前,该功能不会等待下载任务完成.因此我的应用程序总是崩溃.有关如何等待下载的任何想法?
我一直在阅读在Xcode 6中使用了解开segue的问题.我正在使用Xcode 6.1.1并使用swift.
我使用导航控制器放置的"后退"按钮.因此我无法cntrl拖动到退出图标.此外,我无法从viewController图标拖动到退出图标.
这是一个错误吗?或者我错过了一些关于如何使用unwind segue的基本知识.如何从故事板中设置展开segue?
我正在开发一个自定义相机应用程序,我以模态方式呈现3个viewControllers.在每个segue,我使用prepareForSegue函数传递数据.我的问题是在完成相机工作后,我需要再显示2个需要在navigationController中的viewControllers.
我已经意识到,如果我没有传递任何数据,导航控制器工作正常.但是,当我传递数据时,应用程序在运行时崩溃.这样做的正确方法是什么?
这是我对segue功能的准备;
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "camera2Crop"{
let controller: CropViewController = segue.destinationViewController as CropViewController
controller.photoTaken = self.photoTaken
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里photoTaken
是一个UIImage
对象.此外,这里是我的故事板的截图,我在其中放置了navigationController.我将prepareForSegue
函数调用CustomCameraViewController
为segue CropViewController
.
编辑:我已将prepareForSegue更改为以下代码;
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "camera2Crop" {
let controller: CustomNavigationController = segue.destinationViewController as CustomNavigationController
controller.photoTaken = self.photoTaken
}
}
Run Code Online (Sandbox Code Playgroud)
现在应用程序没有崩溃,但我不知道如何通过导航控制器发送对象
我正在使用平移手势识别器,我需要检测初始触摸点才能采取行动.我使用以下代码;
@IBAction func panDetected(sender: UIPanGestureRecognizer) {
let touchPoint = sender.locationOfTouch(0, inView: nil)
println(touchPoint.x)
}
Run Code Online (Sandbox Code Playgroud)
这些功能在我移动手指时打印触摸点.然而,一旦我从屏幕上抬起手指,它就会崩溃.这是崩溃消息;
Terminating app due to uncaught exception 'NSRangeException', reason: '-[UIPanGestureRecognizer locationOfTouch:inView:]: index (0) beyond bounds (0).'
Run Code Online (Sandbox Code Playgroud)
我已经尝试过设置最小和最大触摸限制,正如这篇文章所暗示的那样; 在iOS中查看触摸位置时,PAN手势会崩溃
可能是什么问题?