通过替换视图委托 nil
delegate nil by replacing view
我有 2 种方式访问我的应用程序的其他页面:
- 滑出或点击图标菜单打开我的滑出导航面板;
- 链接在第一页。
当我从菜单或第一页更改页面时,我的代理等于 nil,但是当我第一次 运行 我的应用程序并在我的代理上打印时,代理没问题。
我在控制台上看到 "lol" 消息,但我的菜单打不开,这里我的委托等于 nil,我认为这就是我无法使用 toggleLeftPanel 函数的原因:
@IBAction func menuTapped(sender: AnyObject) {
print("lol")
delegate?.toggleLeftPanel?()
}
因此,当我点击图标菜单时无法打开滑出式导航面板:
您可以在这里试用我的应用程序:https://github.com/Vkt0r/SlideOutSideBarTest
我看不出委托和协议之间的问题在哪里,我正在查看教程,但找不到我的错误。
您需要取消注释 NosOffresViewController 中的 menuTapped 方法
并将 nosOffresTapped 替换为
@IBAction func nosOffresTapped(sender: AnyObject) {
let window = UIApplication.sharedApplication().keyWindow
let viewController = window!.rootViewController as! ContainerViewController
let nosOffresViewController: NosOffresViewController = UIStoryboard.nosOffresViewController()!
nosOffresViewController.delegate = viewController
self.delegate?.pushViewControllerInStack!(nosOffresViewController)
self.navigationController?.pushViewController(nosOffresViewController, animated: false)
}
在 CenterViewContoller 中。还需要声明 ContainerViewContoller 符合 NosOffresViewControllerDelegate 协议。
好的,我明白了为什么它没有设置委托。 UIStoryboard.nosOffresViewController()! returns 每次调用一个新实例。所以你会设置委托,然后推送一个不同的实例。
我有 2 种方式访问我的应用程序的其他页面:
- 滑出或点击图标菜单打开我的滑出导航面板;
- 链接在第一页。
当我从菜单或第一页更改页面时,我的代理等于 nil,但是当我第一次 运行 我的应用程序并在我的代理上打印时,代理没问题。
我在控制台上看到 "lol" 消息,但我的菜单打不开,这里我的委托等于 nil,我认为这就是我无法使用 toggleLeftPanel 函数的原因:
@IBAction func menuTapped(sender: AnyObject) {
print("lol")
delegate?.toggleLeftPanel?()
}
因此,当我点击图标菜单时无法打开滑出式导航面板:
您可以在这里试用我的应用程序:https://github.com/Vkt0r/SlideOutSideBarTest
我看不出委托和协议之间的问题在哪里,我正在查看教程,但找不到我的错误。
您需要取消注释 NosOffresViewController 中的 menuTapped 方法
并将 nosOffresTapped 替换为
@IBAction func nosOffresTapped(sender: AnyObject) {
let window = UIApplication.sharedApplication().keyWindow
let viewController = window!.rootViewController as! ContainerViewController
let nosOffresViewController: NosOffresViewController = UIStoryboard.nosOffresViewController()!
nosOffresViewController.delegate = viewController
self.delegate?.pushViewControllerInStack!(nosOffresViewController)
self.navigationController?.pushViewController(nosOffresViewController, animated: false)
}
在 CenterViewContoller 中。还需要声明 ContainerViewContoller 符合 NosOffresViewControllerDelegate 协议。
好的,我明白了为什么它没有设置委托。 UIStoryboard.nosOffresViewController()! returns 每次调用一个新实例。所以你会设置委托,然后推送一个不同的实例。