EXC_BAD_ACCESS 在使用 UIWebView 执行转至 ViewController 时?
EXC_BAD_ACCESS when performing a segue to ViewController with a UIWebView?
所以我有这样的设置:
我有一个自定义代码 reader 视图控制器,只要它检测到条形码,我就希望它转到另一个带有标签和 UIWebView 的视图控制器。到目前为止,它仅与显示的标签完美配合。出于某种原因,我所做的只是添加一个 UIWebView
并在我的第二个视图控制器自定义 class 中添加一个 IBOutlet
并且由于 exc_bad_access
错误,segue 将无法工作.该错误突出显示了我的代码 reader 视图控制器中的以下行:
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 运行 脱离了主线程。这会发生在闭包中吗?而且,这是否意味着您不能在 closure/block 中执行 segue?
非常感谢任何帮助。非常感谢。
根据您的代码假设,
您没有将字符串从 CodeReaderViewController 传递到 SecondViewController 的代码。
这是我做的(实际上是我做的条形码 reader):
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 出来之后写的。
所以我才意识到,出于某种原因,我的 segue 没有 运行 在主线程上。调度到主队列解决了这个问题。
如果您已经在主线程中调用了 prepareForSegue 但仍然无法访问,请仔细检查您是否在情节提要中使用了正确的视图控制器 class。
所以我有这样的设置:
我有一个自定义代码 reader 视图控制器,只要它检测到条形码,我就希望它转到另一个带有标签和 UIWebView 的视图控制器。到目前为止,它仅与显示的标签完美配合。出于某种原因,我所做的只是添加一个 UIWebView
并在我的第二个视图控制器自定义 class 中添加一个 IBOutlet
并且由于 exc_bad_access
错误,segue 将无法工作.该错误突出显示了我的代码 reader 视图控制器中的以下行:
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 运行 脱离了主线程。这会发生在闭包中吗?而且,这是否意味着您不能在 closure/block 中执行 segue?
非常感谢任何帮助。非常感谢。
根据您的代码假设,
您没有将字符串从 CodeReaderViewController 传递到 SecondViewController 的代码。
这是我做的(实际上是我做的条形码 reader):
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 出来之后写的。
所以我才意识到,出于某种原因,我的 segue 没有 运行 在主线程上。调度到主队列解决了这个问题。
如果您已经在主线程中调用了 prepareForSegue 但仍然无法访问,请仔细检查您是否在情节提要中使用了正确的视图控制器 class。