iOS学习笔记(十二)————传值与模态弹出

/ 0评 / 0

在app的开发中我们不止要维护一个页面,当出现多个页面的时候我们就要考虑一下页面之间的联系了,首先就是页面之间的传值问题,现在先介绍一下 初始化传值与属性传值

在面向对象里面出现了属性,这些属性就是用来存储数据的,我们可以在别的类中初始化要接收数据的类的对象,然后就可以给他的属性赋值了,像这样

   TViewController *thirdVC = [[TViewController alloc] init];
    thirdVC.string = @"第二个页面传过去的";

而在我们OC中类的对象在初始化的时候要 allocl ,init ,我们可以通过重写init方法来实现初始化传值,其实这就类似于 构造函数

@interface SViewController (){
    NSArray *getArray;
}
@end

//记得要在头文件里声明,不然外部调不到这个方法
- (id)initWithArray:(NSArray *)array{
    //    初始化方法中的内容 记住
    self = [super init];
    if (self){
        // 接受传递过来的数组
        getArray = array;
    }
    return self;
}

我们在使用的时候就直接可以在初始化的时候传递过来一个值了

   NSArray *array = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];
    SViewController *second = [[SViewController alloc] initWithArray:array];

这里只是介绍了两种传值方法,以后还会学到别的,学到之后根据场景自己选择使用就行。

下面我们说一下模态弹出,其实就是从屏幕周围看不到的地方弹出一个页面,像联通客户端开启的时候就给你来一个,还有某些APP的登录注册什么的,而且不会将视图添加到导航控制器中,额。。。。
其实用起来很简单

   TViewController *thirdVC = [[TViewController alloc] init];
    thirdVC.string = @"第二个页面传过去的";
    //    模态弹出
    //    不会将视图控制器加入到导航控制器中
    [self presentViewController:thirdVC animated:YES completion:nil];
    NSLog(@"当前导航中的视图控制器的个数%ld",self.navigationController.viewControllers.count);

而取消模态也很简单,就一句代码就实现了

    //    dismiss  清除 解雇 离开
    //    清除当前页面
    [self dismissViewControllerAnimated:YES completion:nil];

来看一下我们的这几块连接起来最终的运行打印效果

sendvalue&&present

代码请查看 http://git.oschina.net/zcb1603999/LearningiOS

评论已关闭。