关于控制器跳转需要注意的问题:
一般三种方式进行跳转: push,modal,custom
一般跳转相应实现方法和注意点:
1.[self.navigationController pushViewController:jump animated:YES];
适合跳转到代码编写的View上或者xib描述的View。
如果想跳转到storyboard搭建的controller用[self performSegueWithIdentifier:@"jump" sender:self];
这种方法适合storyboard搭建的controller之间的跳转,如果你是纯代码写的View或xib描述的,无法设置segue,也就是不能实现跳转,如果真的用了【alloc init】创建,如果xib描述或者代码描述的View则跳转到相应View,如果啥都没有对View进行描述,只是storyboard进行描述,那么很抱歉,反正我不知道怎么主动加载它,只知道有两个主动加载的,一个是加载箭头所指的,一个是加载标示符对应的,但是这些是设置程序运行时最先加载的View,我们这里并不是这样,所以压根就不是跳转到storyboard所描述的样子,而是系统创建的一个view,显示为黑色,你没有去代码设置数据则没有数据显示
2.[self presentModalViewController:jump animated:YES];
注意:如果还想要modal回上一个界面还需要另外设置个按钮专门监听点击
[self dismissModalViewControllerAnimated:YES];
3.在storyboard中点击ctrl从自身controller连接到另外一个controller设置跳转方式,一般我设置push,然后为segue绑定标示符,作用:跳转的时可以知道要跳转的相应controller,因为有时候一个控制器对应好几条线,这时就体现了标示符的作用了,只需要进行代码判断,手动跳转就行
[self performSegueWithIdentifier:@"jump" sender:self];
注意:如果在storyboard创建了controller,没有进行连线关联和设置Segue,只是设置了自定义classes类名,直接使用[self.navigationController pushViewController:jump animated:YES];进行跳转的话跳转得到的并不是storyboard中创建的view的样子,而是系统自动创建的一个view,而且颜色是黑色的,这就是很多不注意导致所说的跳转黑屏和没有数据的问题,因为都不是同一个View,肯定没数据,数据都设置在了storyboard中,但是并不是加载的storyboard的view
注意:如果使用了xib描述的view,突然想换代码编写,发现还出现xib描述的界面,记得clear一下,保险一点就是卸载软件,在clear。