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

使用Storyboard和自定义UITabBarController弹出Alert崩溃如何解决

问题解决方案

1. 解决按钮点击崩溃问题

崩溃原因有两个大概率触发点:

  • 按钮绑定失效:打开Storyboard进入SettingsViewController的界面,右键点击触发事件的按钮,检查Touch Up Inside的绑定列表,删除所有多余的无效绑定,重新绑定到当前的saveButtonPressed方法,unrecognized selector报错九成以上都是按钮绑定了不存在的方法导致。
  • 弹窗调用逻辑错误:不需要通过tabBarController执行弹窗弹出,当前控制器本身就有present能力,把最后一行弹窗代码修改为:
self.present(alert, animated: true, completion: nil)

2. 解决UITabBarControllerDelegate不触发问题

你只声明了StarredViewController遵守代理协议,没有给TabBarController的代理属性赋值,只需要在SceneDelegate初始化TabBarController的代码末尾添加一行赋值即可:

tabBarController.delegate = starredViewControllerTab

添加后代理方法就能正常触发。

3. 解决前两个Tab沿用Storyboard旧配置的问题

你只给第三个StarredViewController的tabBarItem做了代码赋值,前两个视图控制器默认会读取Storyboard中设置的tabBarItem配置,你只需要给前两个也添加代码配置就可以覆盖Storyboard的设置,参考代码:

queryViewControllerTab.tabBarItem.title = "查询"
queryViewControllerTab.tabBarItem.image = UIImage(systemName: "magnifyingglass")
settingsViewControllerTab.tabBarItem.title = "设置"
settingsViewControllerTab.tabBarItem.image = UIImage(systemName: "gearshape")

额外说明

你当前的SceneDelegate配置完全符合iOS15+的官方规范,不需要调整AppDelegate相关代码,Xcode13默认创建的项目的Scene配置都是正常可用的,不需要适配旧版本的AppDelegate接管rootViewController的逻辑。

内容的提问来源于stack exchange,提问作者Ste

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:45:01