这两天有个朋友问关于我自定义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:^{
//跳转结束后需要执行的方法
}];
我也是小菜鸟.而且这是简单的问题,如果涉及到深处,还请大神解答!
网友评论