简体   繁体   English

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

[英]How to switch properly between UIViews or UIViewController inside NSObject Class when clicked the item in tableView inside of NSObject in Swift?

What i want is, I have NSObject MenuView which has tableView in it, when i click one the of cells it should remove the current UIViewController or UIView on another controller.我想要的是,我有 NSObject MenuView,其中包含 tableView,当我单击其中一个单元格时,它应该删除另一个 Z594C103F2C6E04C3D8AB059F031E0C1 上的当前 UIViewController 或 UIView。 I have used shared instance of my MainPageController in NSObject didSelectItem method to replace the current view on MainPageController with the new one by using view.willRemoveSubviews(myCurrentView) and addSubView(newView) but it does nothing even not a crash or error.我在 NSObject didSelectItem 方法中使用了 MainPageController 的共享实例,通过使用 view.willRemoveSubviews(myCurrentView) 和 addSubView(newView) 将 MainPageController 上的当前视图替换为新视图,但它甚至没有崩溃或错误。 is there anyone could help me with that please?请问有人可以帮我吗? I am stuck on it for a long time...我卡在上面很久了...

here is the info of how i did it.这是我如何做到的信息。

inside of NSObject class's didSelectItem method inside of NSObject class's didSelectItem方法中

    let view = UIView()
    view.backgroundColor = .red
    MainPageController.shared.addCustomSubView(View: view)

and here how i defined it in MainPageController以及我如何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 also the view of my another controller, which i added as a subView of current MainPageController inOutView也是我的另一个 controller 的视图,我将其添加为当前MainPageController的子视图

So i want to replace the inOutView with my new View coming from the NSObject class inside didSelectItem所以我想用我的新View替换inOutView来自 didSelectItem 内部的NSObject class

in MainPageController :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)

}

and declare var mainPageController: MainPageController in NSObject class and inside of didSelectItemAtIndexPath this code:并在 NSObject class 和didSelectItemAtIndexPath内部声明var mainPageController: MainPageController这段代码:

 self.mainPageController?.showController()

by doing this I achieved switching between uiviews that is inside of viewController by using NSObject.通过这样做,我通过使用 NSObject 实现了在 viewController 内部的 uiviews 之间的切换。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM