在 Swift 中单击 NSObject 内部的 tableView 中的项目时,如何在 NSObject 类中的 UIViewController 上的 UIView 之间正确切换?
Posted
技术标签:
【中文标题】在 Swift 中单击 NSObject 内部的 tableView 中的项目时,如何在 NSObject 类中的 UIViewController 上的 UIView 之间正确切换?【英文标题】:How to switch properly between UIViews or UIViewController inside NSObject Class when clicked the item in tableView inside of NSObject in Swift? 【发布时间】:2021-03-10 02:46:22 【问题描述】:我想要的是,我有 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
的子视图
所以我想用我的新 View
替换 inOutView
来自 didSelectItem 内的 NSObject
类
【问题讨论】:
你有没有使用委托方法调用函数移除视图? 不,我只是使用 MainPageControoler 的共享单例并从 NSObject 类调用其中的方法 【参考方案1】:在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 类和 didSelectItemAtIndexPath
内部声明 var mainPageController: MainPageController
这段代码:
self.mainPageController?.showController()
通过这样做,我通过使用 NSObject 在 viewController 内部的 uiviews 之间实现了切换。
【讨论】:
以上是关于在 Swift 中单击 NSObject 内部的 tableView 中的项目时,如何在 NSObject 类中的 UIViewController 上的 UIView 之间正确切换?的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 中未调用 ViewForAnnotation
无法在目标 C 中调用 swift 函数。获取 NSObject 的错误接口声明
如何在 Swift 中检索 NSURLRequest 的 HTTPBody 参数到 Dictionary: [NSObject: AnyObject]