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,那要如何做?谢谢!