微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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 之间的切换。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。