我想在笔记本中动态创建和删除页面。在主类中,我成功创建并添加了一个带按钮的页面。这些页面当然是一个单独的类,里面有一个按钮。 我知道我可以将按钮放在笔记本外面并从主类中删除它们但是我想使用页面自己的按钮来自毁整个页面,因为它不再需要了。
对不起,我没有发布任何代码,但我是通过我的手机发布的。此外,似乎还有一个问题不是那么具体,需要一个最小的工作示例。
答案 0 :(得分:0)
正如您所猜测的那样,在从自己的事件处理程序中销毁UI对象时需要小心。当前事件处理程序不仅仍然处于活动状态,而且可能还有其他待处理事件仍在队列中,如果目标对象在交付时已被销毁,那么您可能会崩溃。
最好的做法是将销毁推迟到当前和可能的挂起事件处理程序完成之后,除了要执行的销毁之外,没有什么可以等待UI对象完成。最好的方法是使用wx.CallAfter
。它会调用一个带有参数的函数,在下次事件循环清空时,它会给你一个函数,所以隐含地没有其他任何东西等待完成或发送给相关的UI对象。
在您的情况下,可以安全地执行诸如立即从笔记本中删除页面以及隐藏页面窗口等操作。然后使用wx.CallAfter
调用某个函数(可能在笔记本类中),该函数调用页面窗口的Destroy
方法并执行必要的任何其他清理。我建议拆分这两组任务的原因并不是因为调用该函数需要很长时间,但在某些情况下,它可能足够长以在瞬态状态下瞬间闪烁,因此外观不太平滑用户。