美文网首页
跳转自定义StoryBoard

跳转自定义StoryBoard

作者: 起个名字好难O0 | 来源:发表于2017-05-03 18:29 被阅读50次

    这两天有个朋友问关于我自定义Story Board(SB)加载的问题.其实这都是UI基础了.开发时间长了.大家都忘记了.因为自定义SB很少用到.大部分是自定义Xib.并且自定义SB网上很多教程.大家都会告诉你:

    //其实这两段代码就相当于普通控制器alloc init方法
    //SB是自定义Story Board的名字.
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"SB" bundle:nil];
    //SBViewController是关联SB自定义的控制器类名
    SBViewController *sbVC = [sb instantiateInitialViewController];
    

    但是有的人就是转不过弯儿,钻了牛角尖.
    比如: 有两个控制器,A控制器和B控制器. B是自定义Story Board,并且已经关联.
    可有人偏偏把上面两行代码放在B控制器里面.这样做没有任何意义.

    你需要把这两行代码放在A控制器,然后在A控制器里面你可以Push或者模态跳转到B控制器.最后就显示SB了.

    下面上A的代码:

    #import "ViewController.h"
    #import "SBViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    }
    //点击屏幕方法(系统方法)
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        //SB是自定义的StoryBoard的名字
        UIStoryboard *sb = [UIStoryboard storyboardWithName:@"SB" bundle:nil];
        //SBViewController就是关联SB的类名.也就是上面提到的B控制器.
        SBViewController *sbVC = [sb instantiateInitialViewController];
        //模态跳转到B控制器
        [self presentViewController:sbVC animated:YES completion:^{
            //跳转结束后需要执行的方法
    
        }];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    
    @end
    

    如果功能都在SB中实现了.则B控制器就不需要写任何代码.如果需要返回上一级界面.也就是A界面.可以关联一个按钮点击方法,然后添加以下代码:

    //这段代码不需要知道返回哪个控制器, 从哪进来的,就返回到哪.  一定要放在点击事件或者定时方法里面!
     [self dismissViewControllerAnimated:YES completion:^{
            //跳转结束后需要执行的方法
    
        }];
    

    我也是小菜鸟.而且这是简单的问题,如果涉及到深处,还请大神解答!

    相关文章

      网友评论

          本文标题:跳转自定义StoryBoard

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