You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将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的编译范围,直接输入类名即可。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:05:41