在app的开发中我们不止要维护一个页面,当出现多个页面的时候我们就要考虑一下页面之间的联系了,首先就是页面之间的传值问题,现在先介绍一下 初始化传值与属性传值
在面向对象里面出现了属性,这些属性就是用来存储数据的,我们可以在别的类中初始化要接收数据的类的对象,然后就可以给他的属性赋值了,像这样
1 2 |
TViewController *thirdVC = [[TViewController alloc] init]; thirdVC.string = @"第二个页面传过去的"; |
而在我们OC中类的对象在初始化的时候要 allocl ,init ,我们可以通过重写init方法来实现初始化传值,其实这就类似于 构造函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@interface SViewController (){ NSArray *getArray; } @end //记得要在头文件里声明,不然外部调不到这个方法 - (id)initWithArray:(NSArray *)array{ // 初始化方法中的内容 记住 self = [super init]; if (self){ // 接受传递过来的数组 getArray = array; } return self; } |
我们在使用的时候就直接可以在初始化的时候传递过来一个值了
1 2 |
NSArray *array = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil]; SViewController *second = [[SViewController alloc] initWithArray:array]; |
这里只是介绍了两种传值方法,以后还会学到别的,学到之后根据场景自己选择使用就行。
下面我们说一下模态弹出,其实就是从屏幕周围看不到的地方弹出一个页面,像联通客户端开启的时候就给你来一个,还有某些APP的登录注册什么的,而且不会将视图添加到导航控制器中,额。。。。
其实用起来很简单
1 2 3 4 5 6 |
TViewController *thirdVC = [[TViewController alloc] init]; thirdVC.string = @"第二个页面传过去的"; // 模态弹出 // 不会将视图控制器加入到导航控制器中 [self presentViewController:thirdVC animated:YES completion:nil]; NSLog(@"当前导航中的视图控制器的个数%ld",self.navigationController.viewControllers.count); |
而取消模态也很简单,就一句代码就实现了
1 2 3 |
// dismiss 清除 解雇 离开 // 清除当前页面 [self dismissViewControllerAnimated:YES completion:nil]; |
来看一下我们的这几块连接起来最终的运行打印效果
代码请查看 http://git.oschina.net/zcb1603999/LearningiOS
转载请注明:怼码人生 » iOS学习笔记(十二)————传值与模态弹出