美文网首页iOS学习笔记
界面跳转系列一:push和modal

界面跳转系列一:push和modal

作者: Corbin___ | 来源:发表于2017-04-02 17:17 被阅读0次

    一、介绍(基础操作忽略)

    push:是针对在Navigation(导航栏)下使用的
    modal:模态窗口(只能对这个窗口操作,点击其他窗口没有响应的), 是可以在任何控制器使用的,主要有两种:
    1.窗口弹出(弹出后,后面的视图不可用的,比如A弹出B,A不可用)
    2.控制器的跳转

    二、使用

    1、push必须在Navigation下使用、

    Paste_Image.png

    解释:按ctrl进行连线,分别连出push和modal

    Paste_Image.png

    问题:点击push,报错
    原因:因为push必须在Navigation下使用,我这个没有在这个环境下

    2、如果没有在Navigation下使用modal是可以跳转的,而且还不需要任何代码

    那么在使用modal怎么做出Navigation的效果呢?

    Paste_Image.png Paste_Image.png Paste_Image.png
    效果:这样就可以返回到主视图了
    注意:dismissViewControllerAnimated这个方法并不算返回上一层,正确的说是将现有视图隐藏,自然就会显示出上一层的视图出来,从而达到返回上一层的效果

    3、实现不连线跳转

    Paste_Image.png Paste_Image.png

    然后再主视图的.m文件写上这个代码,注意,刚才modal的连线要去掉

    Paste_Image.png
    - (IBAction)modalClicked:(UIButton *)sender {
        
        UIStoryboard *storyboard = self.storyboard;
        
        FirstViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"jump"];
        
        
        [self presentViewController:vc animated:YES completion:nil];
    }
    
    

    方便copy,附上代码

    4、presentViewController 跳转 后视图是黑色

    testViewController *vc = [[testViewController alloc] init];
     [self presentViewController:vc animated:YES completion:nil];
    

    解析:如果用以上的方法跳转,那么跳转后的视图是黑色的
    原因:我觉得操作跳转是成功了,确实跳转到了指定的控制器,但是我们的控制器视图的显示是故事版绘制的,所以我们只是跳转了控制器,但是并没有找到指定的故事版把视图绘制出来
    解决

    UIStoryboard *storyboard = self.storyboard;
    
     FirstViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"jump"];
    
     [self presentViewController:vc animated:YES completion:nil];
    

    这样才可以成功

    5、代码操作

    1.Navigation下操作:

    //跳转到指定id的控制器(这里的id是指在故事板里设置控制器的id)
        [self.navigationController pushViewController:vc animated:YES];
    //返回到上一层视图
        [self.navigationController popViewControllerAnimated:YES];
    // 返回到根视图
        [self.navigationController popToRootViewControllerAnimated:YES];
    
    

    这里,同样有个问题,操作不当,就会出现跳转后黑色的情况

    // 创建控制器对象要用这种方法创建
    UIStoryboard *storyboard = self.storyboard;
    
     FirstViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"jump"];
    
    // 如果用这种,就会出现跳转后黑色
    FirstViewController *vc = [[FirstViewController alloc] init];
    
    

    相关文章

      网友评论

        本文标题:界面跳转系列一:push和modal

        本文链接:https://www.haomeiwen.com/subject/qwrwottx.html