Swift:如何为UIHostingController重写viewDidLoad及相关方法
如何为UIHostingController重写方法(如shouldAutorotate)
你不能直接在UIHostingController的实例上重写方法,正确的做法是创建它的子类,在子类中覆盖需要自定义的方法。以下是具体实现步骤:
1. 创建自定义UIHostingController子类
通过继承UIHostingController并指定泛型参数,你可以重写viewDidLoad、shouldAutorotate等方法:
class CustomHostingController<Content: View>: UIHostingController<Content> { // 重写viewDidLoad添加自定义初始化逻辑 override func viewDidLoad() { super.viewDidLoad() // 在这里设置模态样式或其他初始化操作 modalPresentationStyle = .fullScreen } // 重写shouldAutorotate属性 override var shouldAutorotate: Bool { return true } }
2. 使用自定义子类创建实例
用自定义子类替代原生UIHostingController来初始化视图控制器:
let viewModel = VM() let rootView = View1(viewModel: viewModel) let vc = CustomHostingController(rootView: rootView) // 若需展示该控制器,执行以下代码 present(vc, animated: true)
补充说明
- Swift不支持在实例对象上动态重写方法,必须通过子类继承的方式覆盖父类的方法。
- 如果仅需要设置
modalPresentationStyle这类属性,也可以直接在实例上设置,但涉及方法/属性重写时必须子类化。
内容的提问来源于stack exchange,提问作者Phillip
相关产品推荐
相关产品推荐

