跳转自定义StoryBoard

这两天有个朋友问关于我自定义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 *)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)