显示一个新的界面

一.准备:加载自己创建的ViewController

使用Storyboard创建的界面是静态的

就必须写一个类来管理-RootViewController

让RootViewController和storyboard里面的界面相关联


显示一个新的界面_第1张图片
示意图

关联:
如果需要访问界面里面控件的对象:IBOutlet


显示一个新的界面_第2张图片
示意图

如果需要响应界面里面控件的事件:IBAction


显示一个新的界面_第3张图片
示意图

使用present方式显示一个视图


显示一个新的界面_第4张图片
示意图

二.三种创建方法

1.代码创建

说明:创建UIViewController的一个子类

//RootViewController里面的跳转代码
SecondViewController *sv = [[SecondViewController alloc] init];
[self presentViewController:sv animated:YES completion:nil];

//SecondViewController的相关代码
- (void)viewDidLoad {
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor]; 
    //手动界面布局
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    /**让当前界面消失
         present - dismiss*/
    [self dismissViewControllerAnimated:YES completion:nil];
}

2.storyboard创建

说明:使用Storyboard 添加一个UIViewController,在storyboard里面添加界面的控件。如需要关联或者响应事件,让这个界面关联代码,在代码里面操作控件

1.能够快速添加一个新的界面
2.能够使用拖拽控件的方式布局
3.可以实现界面之间的跳转关系
注意:创建控制器 先加载Storyboard 再调用代码里面对应的方法

3.xib创建

说明:使用xib添加一个View,filesOwner关联UIViewController的子类,让添加的view和代码控制器的view关联,使用initWithNibNamed方法加载(实际上只是在xib拖拽了一个view对其操作,让其替换要加载的视图)

xib只能创建一个界面不能实现跳转 Storyboard可以创建多个界面 并且可以实现界面之间的跳转
如果只是单纯需要一个界面,用Xib方便
如果需要多个有跳转关系的界面,用Storyboard方便
Xib的事情storyboard都可以完成
Xib阅读性更强

//NibName:xib文件的名字
//bundle:Xib文件的路径
//[NSBundle mainBundle]
//nil默认工程的主路径
UIViewController *vc = [[UIViewController alloc] 
                                    initWithNibName:@"ThirdViewController" 
                                       bundle:[NSBundle mainBundle]];

[self presentViewController:vc animated:YES completion:nil];
显示一个新的界面_第5张图片
设置视图的拥有者
显示一个新的界面_第6张图片
改控制器默认控制的view

补充:关于事件的传递

从最外层开始页面开始,最外层不响应,到下一层页面响应,如果直到window层还不响应,这个事件就会被放弃。

通过present显示界面是直接将页面覆盖到上一个页面,具有安全隐患

但是有的时候又避免不了必须要使用它

你可能感兴趣的:(显示一个新的界面)