在 Swift 中单击 NSObject 中的 tableView 中的项目时,如何在 NSObject 类中的 UIViews 或 UIViewController 之间正确切换?

问题描述

我想要的是,我有 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 之间的切换。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...