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

UITextField、TableView不显示及设置delegate后App崩溃问题咨询

问题修复方案

核心原因

addCardViewController 控件不显示、设置delegate崩溃

你当前跳转addCardViewController时直接调用了无参数初始化方法addCardViewController(),该控制器的UI控件是通过Storyboard/Xib绑定IBOutlet生成的,直接无参数初始化不会加载关联的视图文件,所有IBOutlet属性默认是nil,此时访问控件属性、设置代理都会触发崩溃,同时控件也不会正常渲染。

WalletViewController TableView异常

你定义了table属性,但没有将其添加到当前视图层级,也没有完成基础配置、代理赋值,无法正常使用。


具体修复步骤

修复addCardViewController相关问题

  • 确认你的addCardViewController关联的是Storyboard还是Xib文件,对应修改跳转初始化逻辑:
    1. 若使用Storyboard:先给控制器在Storyboard面板设置Storyboard ID为AddCardVC,跳转代码替换为:
    let storyboard = UIStoryboard(name: "Main", bundle: nil) // 替换为你实际的Storyboard文件名
    guard let rootVC = storyboard.instantiateViewController(withIdentifier: "AddCardVC") as? addCardViewController else { return }
    
    1. 若使用Xib:跳转初始化代码替换为:
    let rootVC = addCardViewController(nibName: "你的Xib文件名", bundle: nil) // 替换为你实际的Xib文件名
    
  • 初始化逻辑修改完成后,在addCardViewController的viewDidLoad方法中添加代理赋值代码即可正常运行:
cardHolder.delegate = self
cardNumber.delegate = self
expiryDate.delegate = self
cvv.delegate = self

修复WalletViewController TableView相关问题

在WalletViewController的viewDidLoad方法中添加TableView基础配置代码:

// 添加到视图层级
view.addSubview(table)
// 设置布局(可自行调整尺寸位置)
table.frame = CGRect(x: 0, y: view.safeAreaInsets.top, width: view.bounds.width, height: 700)
// 注册cell
table.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
// 赋值代理和数据源
table.delegate = self
table.dataSource = self
  • 额外优化:你重复设置了两次view.backgroundColor,可删除冗余的那行代码。

其他说明

Xcode提示无法识别xxx.delegate = self的问题,会在你完成上述初始化、代理协议遵守配置后自动消失,你当前的扩展中已经正确声明了对应代理的遵守,不需要额外修改代理方法代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:06:07