问题描述
我想要的是,我有 NSObject MenuView,其中包含 tableView,当我单击其中一个单元格时,它应该删除另一个控制器上的当前 UIViewController 或 UIView。我在 NSObject didSelectItem 方法中使用了 MainPageController 的共享实例,通过使用 view.willRemoveSubviews(myCurrentView) 和 addSubView(newView) 将 MainPageController 上的当前视图替换为新视图,但它甚至没有崩溃或错误。有没有人可以帮我解决这个问题?我被困了很长时间...
这是我如何做到的信息。
inside of NSObject class's didSelectItem
方法
let view = UIView()
view.backgroundColor = .red
MainPageController.shared.addCustomSubView(View: view)
这里是我如何定义它in MainPageController
func addCustomSubView(View: UIView) {
view.willRemoveSubview(inOutView)
view.addSubview(View)
View.anchor(top: headerLine.bottomAnchor,leading: view.leadingAnchor,bottom: footerLine.topAnchor,trailing: view.trailingAnchor,padding: .init(),size: CGSize(width: 0,height: 0))
}
inOutView
也是我的另一个控制器的视图,我将其添加为当前 MainPageController
所以我想用来自 didSelectItem 中的 inOutView
类的新 View
替换 NSObject
解决方法
在MainPageController
中:
@objc fileprivate func handleMenuButton() {
menuLauncher.showSettings()
menuLauncher.mainPageController = self
}
func showController() {
let dummyController = UIViewController()
dummyController.view.backgroundColor = .red
addChild(dummyController)
view.addSubview(dummyController.view)
dummyController.view.anchor(top: headerLine.bottomAnchor,leading: view.leadingAnchor,bottom: footerLine.topAnchor,trailing: view.trailingAnchor,padding: .init(),size: CGSize(width: 0,height: 0))
dummyController.didMove(toParent: self)
}
并在 NSObject 类和 var mainPageController: MainPageController
内部声明 didSelectItemAtIndexPath
这段代码:
self.mainPageController?.showController()
通过这样做,我使用 NSObject 实现了在 viewController 内部的 uiview 之间的切换。