ios - 如何从另一个访问某些变量的swift文件访问函数 - ios

标签 ios swift null viewcontroller

我有两个 swift 文件 MenuViewController.swift 和 ViewController.swift

我在 ViewController.swift 的以下函数中得到了 nil 异常

@IBOutlet weak var webSiteView: UIWebView!

func LoadWebview(webURL: String) {
   let url = NSURL(string: webURL)
   let request = NSURLRequest(url: url! as URL)
   webSiteView.loadRequest(request as URLRequest) 
}

我使用 MenuViewController.swift 中的以下代码访问了该函数

ViewController().LoadWebview(webURL: "http://www.google.com")

我收到错误线程 1: fatal error :在展开可选值时意外发现 nil 作为附加的屏幕截图

错误截图-> 1

最佳答案

你犯了一个常见的错误。

默认初始化器 ViewController()创建一个全新的 View Controller 实例,它不是 Storyboard中的实例。

因此 socket 未连接且代码崩溃。

即使新实例是 Storyboard 中的实例,您也不能使用此语法,因为在加载关联 View 和 viewDidLoad 之前,无论如何都不会连接导出。被称为。

在您的情况下,您必须通过导出、回调闭包、协议(protocol)/委托(delegate)或在 segue 中传递数据来获取 Storyboard中对 Controller 的实际引用。

关于ios - 如何从另一个访问某些变量的swift文件访问函数 - ios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344902/

相关文章:

iphone - 字符串格式的 Nsdate 不起作用

c# - 总是添加一个空的事件处理程序可以吗?

arrays - 如何检查我的 Ruby 数组中的每个对象是否都具有 nil 属性?

iphone - 将现有对象添加到核心数据?

ios - 获取文档目录中特定文件夹的内容

ios - ios9中的facebook登录问题

ios - 单击 TextView 上打开 UIPickerView 而不是键盘

ios - 如何在 Swift 中放置数组的第一个和最后一个元素

java - C# 合约与 NotNull/在 Java 中创建自己的合约

ios - 使用 View iOS 滚动 uilabel 时保持标签文本与屏幕居中对齐?