storyboard靠什么和xib关联起来的呢?

look4u 2019-04-08 11:17:40
刚接触IOS开发,从别人手里接过来的代码里面只有一个LaunchScreen.storyboard,但是里面是空白的,别的目录里定义了很多xib,找了半天也没找到storyboard和这些xib关联的代码,但是一运行storyboard上那些xib就出来了,很是费解,请教大家!谢谢!
...全文
1314 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
加盐白咖啡 2019-11-18
  • 打赏
  • 举报
回复
你这 iOS 是自学的吧,,没有Main.storyboard,就会在AppDelegate有代码
look4u 2019-04-21
  • 打赏
  • 举报
回复
感谢楼上的,经过一段时间研究终于搞清楚了代码的调用关系,现总结如下:
其实人家给的这段代码里storyboard和xib没什么关系,
首先项目里的storyboard几乎没有用到,上面什么都没放,纯启动的时候晃一下,主要是通过APPDelegate,里面声明了一个TabBarController:
@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) MainTabBarController *mainTabBar;

@end

又声明了一个AppDelegate的分类,里面有一段:
@implementation AppDelegate (AppService)
- (void)initUserManager
{
self.mainTabBar = [[MainTabBarController alloc] init];
self.window.rootViewController = self.mainTabBar;
}
@end
完了就是在MainTabBarController里面加载定义的各个ViewController了
@implementation MainTabBarController
- (void)setupChildViewControllers
{
NSMutableArray *vcs = [NSMutableArray array];

for (int i = 0; i < self.vcs.count; i ++)
{
MainViewController *rvc = [[NSClassFromString(self.vcs[i]) alloc] init];
MainNavigationController *nav = [[MainNavigationController alloc] initWithRootViewController:rvc];
UIImage *image = [[UIImage imageNamed:self.tabBarImages[i]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage *selectImage = [[UIImage imageNamed:self.tabBarSelectImages[i]] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
nav.tabBarItem = [[UITabBarItem alloc] initWithTitle:self.tabBarItems[i] image:image selectedImage:selectImage];
[vcs addObject:nav];
}
self.viewControllers = vcs;
}

@end

系统的启动界面正是MainTabBarController加载的第一个ViewController里的View那些xib

谢谢大家,以后还要不断的学习!
不担心 2019-04-10
  • 打赏
  • 举报
回复
没那么玄的事, LaunchScreen.storyboard也可以关联一个类来做处理的 至于xib就是一个通过鼠标拖来出来的UIVIew,和代码创建的UIVIew没啥区别 可以通过以下代码来加载nib生成的view (nib和xib文件是一模一样的,只是名称不同而已) let nib = UINib(nibName:"nib文件名", bundle: nil); let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView 你去搜一下代码,肯定调用了很多加载nib的方法
So灬低调 2019-04-09
  • 打赏
  • 举报
回复
引用 6 楼 look4u 的回复:
[quote=引用 5 楼 So灬低调的回复:]有一栏目专门设置启动的
就是我上面截图的位置 但是storyboard和xib的关联没有找到 真是头疼啊 别的大神有知道的吗[/quote] 还有一个地方,可以设置xib文件为启动文件 就在这一块!你如果不知道是哪个 就全文按照哪个xib的文件来搜索
So灬低调 2019-04-08
  • 打赏
  • 举报
回复
LaunchScreen.storyboard 一般用来做启动页的,里面即使空白也还有别的方法设置启动页 main.storyboard 才是主要的视图控制板 xib一般是用代码去联系这个xib 使用xib 和 放在storyboard中的视图在app启动时不管是速度还是执行顺序都是不一样的
look4u 2019-04-08
  • 打赏
  • 举报
回复
引用 5 楼 So灬低调的回复:
有一栏目专门设置启动的
就是我上面截图的位置 但是storyboard和xib的关联没有找到 真是头疼啊 别的大神有知道的吗
So灬低调 2019-04-08
  • 打赏
  • 举报
回复
有一栏目专门设置启动的
look4u 2019-04-08
  • 打赏
  • 举报
回复
引用 3 楼 So灬低调 的回复:
不影响!老版本的代码很多都是去掉main.storyboard,直接使用xib,xib灵活性其实更高一点
可以混合使用互相不干扰

我是刚开始接触IOS,所以搞不明白怎么把xib设置为启动界面的,我看程序里是
应该就是用的LaunchScreen.storyboard,但是没有看到任何xib文件的启动信息,所以就不是很明白了,正在查资料了解。。。。。
So灬低调 2019-04-08
  • 打赏
  • 举报
回复
不影响!老版本的代码很多都是去掉main.storyboard,直接使用xib,xib灵活性其实更高一点 可以混合使用互相不干扰
look4u 2019-04-08
  • 打赏
  • 举报
回复
引用 1 楼 So灬低调 的回复:
LaunchScreen.storyboard 一般用来做启动页的,里面即使空白也还有别的方法设置启动页
main.storyboard 才是主要的视图控制板
xib一般是用代码去联系这个xib
使用xib 和 放在storyboard中的视图在app启动时不管是速度还是执行顺序都是不一样的
main.storyboard被去掉了,在他的程序里只有一个storyboard,所以我觉得奇怪

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧