将Project B作为Git子模块接入Project A后,如何在Storyboard中调用其视图控制器?
没问题啊!我之前刚好做过类似的场景,完全可以在Project A的Storyboard里直接用Project B的视图控制器,给你一步步讲清楚怎么操作:
具体实现步骤
1. 先把Project B的依赖在Xcode里配置好
- 首先确认Git子模块已经拉取完成,然后打开Project A的Xcode项目,把Project B的
.xcodeproj文件直接拖到Project A的项目导航栏里(或者通过File > Add Files to "Project A"选择子模块目录下的项目文件)。 - 接着进入Project A的Build Phases面板:
- 在
Target Dependencies里添加Project B的编译目标(如果Project B是Framework类型,选对应的Framework target;如果是源码项目,选对应的App target)。 - 在
Link Binary With Libraries里也添加Project B的目标,确保编译时能正确链接到B的代码。
- 在
2. 在Storyboard中配置Project B的控制器
- 打开Project A的Storyboard,先拖一个和Project B控制器类型匹配的基础控制器(比如普通
UIViewController或者UITableViewController)到画布上。 - 选中这个新拖的控制器,切换到Identity Inspector面板,把
Class字段改成Project B里的视图控制器类名。这里要注意:- 如果Project B是Framework,记得加上模块名,比如
ProjectB.BFeatureViewController(Xcode一般会自动补全,直接选就行); - 如果Project B是纯源码项目,确保B的控制器源码已经被加入Project A的编译范围,直接输入类名即可。
- 如果Project B是Framework,记得加上模块名,比如
3. 关联到UITabBarController或设置跳转
- 如果要把这个控制器作为UITabBarController的Tab项,直接把配置好的控制器拖到TabBarController的关联区域(就是Storyboard里TabBarController旁边的那个箭头栏),然后设置好Tab的标题、图标就行,和本地控制器操作完全一样。
- 如果是用Segue跳转,直接从其他控制器拖Segue到这个配置好的B控制器,设置Segue类型和标识符,逻辑和本地控制器一致。
几个要注意的坑
- 如果Project B是Framework,里面的视图控制器类必须设置为public权限,不然Project A访问不到。
- 要是Project B里有xib、图片这类资源,要么把这些资源也添加到Project A的资源目录,要么把Project B打包成包含资源的Framework,不然运行时会找不到资源。
- 每次更新Git子模块后,记得先重新编译Project B,再编译Project A,确保最新的代码被加载。
内容的提问来源于stack exchange,提问作者mkz
相关产品推荐
相关产品推荐

