gpt4 book ai didi

ios - 如何将 Controller 作为输入参数传递?

转载 作者:行者123 更新时间:2023-11-28 07:22:27 24 4
gpt4 key购买 nike

我只是有这样的协议(protocol):

protocol Containerable {
var containerView: UIView { get }
var containerController: UIViewController { get }
var oldViewController: UIViewController? { get set }
}
protocol ContainerRoutable: class {
func load(controller: UIViewController, into context: inout Containerable)
}
extension ContainerRoutable {
func load(controller: UIViewController, into context: inout Containerable) {
context.oldViewController?.willMove(toParent: nil)
context.oldViewController?.view.removeFromSuperview()
context.oldViewController?.removeFromParent()
controller.view.frame = context.containerView.bounds
context.containerController.addChild(controller)
context.containerView.addSubview(controller.view)
context.oldViewController = controller
controller.didMove(toParent: context.containerController)
}
func loadDashboard(into context: inout Containerable) {
let controller = assembler.resolve(DashboardViewController.self)!
load(controller: controller, into: &context)
}
}

现在我需要在点击操作上使用它:

        mainView.dashboardButton.rx.tap.bind { [weak self] in
self?.mainView.activateDashboardMenuItem()
if var a = self as? Containerable { //warning: Conditional downcast from 'TabBarController?' to 'Containerable' is equivalent to an implicit conversion to an optional 'Containerable'
self?.router.loadDashboard(into: &a)
}
}.disposed(by: bag)

什么是 self ?

class TabBarController: UIViewController, Containerable {
private let mainView: TabBarView
let router: TabBarRoutable
private let bag = DisposeBag()
var oldViewController: UIViewController?
var containerController: UIViewController {
return self
}
var containerView: UIView {
return mainView.containerView
}
}

如何去除下面的警告?

'TabBarController' 的条件向下转换?到 'Containerable' 相当于隐式转换为可选的 'Containerable'

最佳答案

将 if 条件更新为,

if var a: Containerable = self {
self?.router.loadDashboard(into: &a)
}

关于ios - 如何将 Controller 作为输入参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57672307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com