gpt4 book ai didi

ios - 使用 ImageView 与程序化 Segue 进行挑战

转载 作者:行者123 更新时间:2023-11-30 14:13:31 26 4
gpt4 key购买 nike

我在我的一个 Swift iOS 项目中遇到了真正的挑战,我似乎无法找到解决方案。我希望有人能够重现我的问题,并可能就解决方案或解决方法提出建议。

总结我的问题:

我在 Storyboard中有 2 个 View Controller 。第一个 View Controller 包含 3 个按钮,第二个 View Controller 仅包含一个 ImageView 。我在第一个 View Controller 的第一个按钮到第二个 View Controller 上创建了一个segue,当我单击该按钮时,它工作得很好。

对于第二个按钮,我以编程方式调用 segue。首先,我在属性检查器中为 segue 分配了一个 ID (MySegue),然后使用 View Controller 中的方法,调用 segue。当我单击第二个按钮时,它工作得很好。

@IBAction func doSegue(sender: AnyObject) {

self.performSegueWithIdentifier("MySegue", sender: nil)
}

对于我的第三个按钮,我想获取一些网络数据,并且只有在成功后才执行转场。我正在利用 NSURLSession 来获取数据,并通过完成处理程序执行转场。然而,我的问题是,当我单击第三个按钮时,无论我尝试什么, ImageView 都不会显示。如果我添加按钮、标签或其他任何东西,它们会显示正常,但不会显示图像。这是我的按钮代码:

@IBAction func doNSURLSession(sender: AnyObject) {

let requestURL: NSURL = NSURL(string: "https://www.google.com")!
let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(urlRequest) {
(data, response, error) -> Void in

if error == nil {

NSLog("Success!")
self.performSegueWithIdentifier("MySegue", sender: nil)

} else {

NSLog("Fail")

}

}

task.resume()

}

我已尝试一切可能的方法来解决此问题。我可以在方法中以编程方式执行 segue,并且它工作正常,但是如果我调用此 segue,或者甚至调用从 Web 请求的完成处理程序调用此 segue 的方法,则 ImageView 不会显示。有谁知道我做错了什么,或者我可以看什么?

我在 XCode6 和 XCode 7 BETA 中都尝试过这个,两者也有相同的结果......

预先感谢您的帮助。

问候,乔恩

最佳答案

dataTaskWithRequest 完成处理程序不在主线程上执行。

尝试在主线程上调用performSegueWithIdentifier:

dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("MySegue", sender: nil)
}

关于ios - 使用 ImageView 与程序化 Segue 进行挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31493010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com