【背景】
折腾:
期间,需要去用代码,而不用那个nib,去创建一个ViewController。
【折腾过程】
1.搜:
swift create viewcontroller programmatically
参考:
viewcontroller – Presenting a view controller programmatically in swift – Stack Overflow
【总结】
用代码手动,动态地,去实现一个视图类ViewController,基本逻辑是:
- 先是类要继承UIViewController
- 然后初始化的时候,要init父类的designated initializer:
- 然后重写viewDidLoad,去实现自己的视图,要显示的内容
- 最好再去实现,当navigation回去的时候,要关闭窗口,比如实现在:closeWindow
- 最好再去重写didReceiveMemoryWarning,当内存吃紧时,删除一些可以删除的数据和资源,比如不重要的缓存数据。
最后用如下代码去创建ViewController:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import UIKit class MyWalletViewController: UIViewController{ init() { super.init(nibName: nil, bundle: nil) } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } override func viewDidLoad() { super.viewDidLoad() // add your self view here let tabbgView = UIImageView() tabbgView.frame = CGRectMake(0, 20, CGRectGetWidth(self.view.bounds), 44) tabbgView.image = UIImage(named: "title_bg.png" ) self.view.addSubview(tabbgView) // add back <- icon to back to previous page let backImage = UIImage(named: "back.png" ) let backBtn = UIButton() backBtn.frame = CGRectMake(10, 30, 24, 24) backBtn.addTarget(self, action:Selector( "backToPrevWindow:" ), forControlEvents:UIControlEvents.TouchUpInside) backBtn.setImage(backImage, forState:UIControlState.Normal) backBtn.setImage(backImage, forState: UIControlState.Selected) self.view.addSubview(backBtn) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } func backToPrevWindow(button : UIButton) { self.navigationController?.popViewControllerAnimated( true ) } } |
供参考。
更多解释,详见官网文档:
View Controller Programming Guide for iOS: The Role of View Controllers