使用UIWebView对ViewController执行segue时的EXC_BAD_ACCESS?

时间:2015-06-11 22:56:45

标签: ios xcode swift uiwebview exc-bad-access

所以我有这样的设置:

enter image description here

我有一个自定义代码阅读器视图控制器,一旦检测到条形码,我希望它能够转换到带有标签和UIWebView的另一个视图控制器。到目前为止,它只与显示的标签完美配合。出于某种原因,我所做的只是添加UIWebView并在我的第二视图控制器自定义类中添加了IBOutlet,并且由于exc_bad_access错误,segue无法正常工作。该错误突出显示了我的代码阅读器视图控制器中的以下行:

self.performSegueWithIdentifier("push", sender: self) //my segue is named push

这是我的第二个视图控制器代码:

import UIKit

public class SecondViewController: UIViewController {
    var setText:String!
    @IBOutlet weak var WebV: UIWebView!


    @IBOutlet var label: UILabel!
    override public func viewDidLoad() {
        label.text = setText
    }

}

解决方案:所以我刚才意识到,由于某种原因,我的segue正在逃离主线程。这是否发生在闭包中?并且,这是否意味着您无法在闭包/阻止中执行segue?

非常感谢任何帮助。非常感谢你。

3 个答案:

答案 0 :(得分:1)

假设您的代码

你没有代码将String从CodeReaderViewController传递给SecondViewController。

这就是我所做的(实际上对于我所做的条形码阅读器):

class CodeReaderViewController : UIViewController {
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        if segue.identifier == "push" {
            let subVC: SecondViewController = segue.destinationViewController as SecondViewController
            subVC.setText = <ANY TEXT WHICH YOU'D LIKE TO PASS TO SECONDVIEWCONTROLLER>
        }
    }
}

如果它不起作用,请告诉我,因为这是在Swift出来后写的。

答案 1 :(得分:1)

所以我意识到,由于某种原因,我的segue没有在主线程上运行。调度到主队列修复了问题。

答案 2 :(得分:0)

如果您已经在主线程中调用prepareForSegue但仍然访问不良,请仔细检查您是否在故事板中使用了正确的视图控制器类。