Cha*_*eon 0 xcode ios presentviewcontroller swift
尝试通过理解基本级别的代码行来巩固我的知识.
我已经调整了我的应用程序,使用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
Run Code Online (Sandbox Code Playgroud)
当VCL是初始VC时,这个VC1没有任何问题.
填充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)
}
}
Run Code Online (Sandbox Code Playgroud)
知道我错过了什么吗?


注意:顺便说一句VC2实际上在我的项目中称为设置
因此,在实例化VC(故事板创建的)时,首先我们需要通过UIStoryboard按名称路由我们的呼叫
let storyboard = UIStoryboard(name: "Main", bundle: nil)
Run Code Online (Sandbox Code Playgroud)
然后使用故事板设置VC的故事板ID实例化VC
let vc = storyboard.instantiateViewControllerWithIdentifier("VC1") as VC1 //VC1 refers to destinationVC source file and "VC1" refers to destinationVC Storyboard ID
Run Code Online (Sandbox Code Playgroud)
然后我们可以使用VC
self.presentViewController(vc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
这将导入所有destinationVC的对象及其IBOutlet引用.
| 归档时间: |
|
| 查看次数: |
1278 次 |
| 最近记录: |