Swift - 使用xib添加新界面
除了使用 storyboard 外,我们还可以使用 xib 来设计并创建页面。(本文代码已升级至Swift3)



1,下面通过一个样例来演示:
(1)点击主界面的“信息”按钮,页面切换到信息界面
(2)点击信息界面的“返回”,关闭信息界面,回到主界面

2,UIModalTransitionStyle有四种跳转方式:
(1)CoverVertical:从底部升上来的方式
(2)CrossDissolve:快速闪现
(3)FlipHorizontal:卡片翻转形式
(4)PartialCurl:书本翻页效果
3,信息页面创建
(1)新建个 Cocoa Touch Class 文件

(2)在接下来的窗口进行如下命名。
类(Class)命名为 InfoViewController。继承(SubClass of)自 UIViewController 类。
同时把 Also create XIB file 选项勾上,这样就能编辑新的视图界面了。

(3)从左侧的项目组织文件可以看到多出的两个文件:InfoViewController.swift 和 InfoViewController.xib
(4)新创建的消息界面代码如下:
import UIKit
class InfoViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
//关闭当前页面,返回主界面
@IBAction func onBack(_ sender: AnyObject) {
self.dismiss(animated: true, completion: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
(5)主界面的代码如下
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
//跳转到信息页面
@IBAction func ShowInfo(_ sender: AnyObject) {
//实例化一个信息界面
let controller = InfoViewController(nibName:"InfoViewController", bundle:nil)
//详细界面出现的动画方式
controller.modalTransitionStyle = .coverVertical
//界面跳转
self.present(controller, animated:true, completion:nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}

大哥,//实例化一个信息界面
let controller = InfoViewController(nibName:"InfoViewController", bundle:nil)
这一句中,后面的bundle参数是干嘛用的。我看很多人都填了:Bundle.main
而你这里写了nil,这两个有什么区别吗?
大哥你好,想请教假设今天换成三个页面,一个Main.Storyboard,两个xib,那前面两个跟你做的一样,然后第三个xib是从第二个xib跳进来的,然后第三个xib想跳回Main.Storyboard,那要如何做?谢谢!