【问题标题】:How to access function from another swift file which access some variables - ios如何从另一个访问某些变量的快速文件访问函数 - ios
【发布时间】:2018-01-19 15:54:50
【问题描述】:

我有两个 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")

我收到错误 Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value as the attached screenshot

错误截图 -> 1

【问题讨论】:

  • 您的 ViewController 至少应该在调用 LoadWebview 函数之前调用 viewDidLoad()。此外,您还需要获取该控制器的实际加载实例,而不是一个新实例。

标签: ios swift null viewcontroller


【解决方案1】:

你犯了一个常见的错误。

默认初始化器ViewController() 创建一个全新的视图控制器实例,它不是故事板中的实例。

因此插座未连接,代码崩溃。

即使新实例是情节提要中的实例,您也不能使用此语法,因为在加载关联视图并调用 viewDidLoad 之前,插座不会连接。

在您的情况下,您必须在情节提要中获取对控制器的实际引用,无论是使用插座、回调闭包、协议/委托还是在 segue 中传递数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    相关资源
    最近更新 更多