swift presentViewController 以编程方式在destinationVC VDL中找到nil
Posted
技术标签:
【中文标题】swift presentViewController 以编程方式在destinationVC VDL中找到nil【英文标题】:swift presentViewController programmatically finds nil in destinationVC VDL 【发布时间】:2015-04-16 19:47:12 【问题描述】:试图通过理解基本的代码行来巩固我的知识。
我已调整我的应用程序以使用 ViewController(VC)2 作为初始 VC 而不是 VC1。
我正在练习完全通过代码填充这个 VC2。在将 UIButton 编码到 VC1 中时,我的控制台输出“致命错误:在展开可选值时意外发现 nil”(lldb)。并且线程 1 指向我设置了一些属性的 VC1 viewDidLoad (VDL)
VC1
override func viewDidLoad()
super.viewDidLoad()
P1Chip.hidden = true; P2Chip.hidden = true; P3Chip.hidden = true; P4Chip.hidden = true; P5Chip.hidden = true; P6Chip.hidden = true; P7Chip.hidden = true; P8Chip.hidden = true; P9Chip.hidden = true
etc
当它是初始 VC 时,这个 VC1 在 VDL 上没有任何问题。
填充 VC2 的方法
import Foundation
import UIKit
class VC2: UIViewController
let home:UIButton! = UIButton(frame: CGRectMake(10,10,15,15)) as UIButton
override func viewDidLoad()
super.viewDidLoad()
home.backgroundColor = UIColor(red: 0.4, green: 0.6, blue: 0, alpha: 1)
home.setTitle("home", forState: .Normal)
home.addTarget(self, action: "home:", forControlEvents: .TouchUpInside)
view.addSubview(home)
func home(sender:UIButton!)
self.presentViewController((VC1() as UIViewController), animated: true, completion: nil)
知道我错过了什么吗?
注意:顺便说一句,VC2 在我的项目中实际上被称为设置
【问题讨论】:
使用您的 VC2 代码,我可以毫无问题地过渡到另一个 ViewController。错误点在哪里? 指向VC1的VDLP1Chip...~
你能给我们展示更多VC1中的代码吗?我在您的 viewDidLoad 中没有看到任何选项。
你考虑过数组吗...?
考虑...意思是使用它们来获得更简洁的代码?或者这个错误可能是由数组引起的或误用?
【参考方案1】:
所以在实例化一个 VC(故事板创建)时,首先我们需要按名称通过 UIStoryboard 路由我们的调用
let storyboard = UIStoryboard(name: "Main", bundle: nil)
然后使用我们的故事板设置 VC 的故事板 ID 实例化一个 VC
let vc = storyboard.instantiateViewControllerWithIdentifier("VC1") as VC1 //VC1 refers to destinationVC source file and "VC1" refers to destinationVC Storyboard ID
然后我们可以使用 VC 来呈现
self.presentViewController(vc, animated: true, completion: nil)
这将导入所有 destinationVC 的对象及其 IBOutlet 引用。
【讨论】:
以上是关于swift presentViewController 以编程方式在destinationVC VDL中找到nil的主要内容,如果未能解决你的问题,请参考以下文章
Swift Playground:让 ViewController 调用 presentViewController
Swift Bridging-Header Objective-C presentViewController
Swift presentViewController 完成块仅在调试中工作而不在发布中调用