Xcode 14.3.1:viewIsAppearing无法重写父类方法问题求助
解决Xcode提示viewIsAppearing未重写父类方法的问题
问题场景
代码示例:
final class Foo: long chain of derivation leading to UIViewController { override func viewIsAppearing(_ animated: Bool) { // ... super.viewIsAppearing(animated) } }
Xcode 14.3.1提示:viewIsAppearing:该方法未重写任何父类方法,部署目标为iOS 13.0。
解决方案
核对方法签名:确保方法签名完全匹配UIViewController的定义,正确签名为:
override func viewIsAppearing(_ animated: Bool) { super.viewIsAppearing(animated) // 你的业务代码 }注意参数名
_ animated: Bool不能修改,参数类型必须是Bool,方法名拼写完全正确。检查继承链:确认
Foo类的继承链最终指向UIViewController,且中间父类没有将viewIsAppearing(_:)标记为final(标记final的方法无法被重写)。如果中间有自定义父类,确保该父类的viewIsAppearing方法是可被重写的(默认internal权限,同一模块内可重写;跨模块需标记为open)。清理Xcode缓存:
- 按下
Command + Shift + K清理构建文件夹 - 按下
Command + Option + Shift + K清理派生数据 - 重启Xcode后重新编译
- 按下
验证父类方法存在:在Xcode中按住
Command键点击super,跳转至父类定义,确认父类(或最终的UIViewController)确实存在viewIsAppearing(_:)方法。如果是第三方库的父类,检查库的版本是否支持iOS 13.0及以上,且正确实现了该方法。
内容的提问来源于stack exchange,提问作者Anton Tropashko
相关产品推荐
相关产品推荐

