2

我正在尝试在我的应用程序中实现一个按钮,我遇到了一些奇怪的行为。我有一个“撰写帖子”按钮,我将其添加到应用程序的关键窗口中。我想创建按钮并将其隐藏在某些情况下,例如导航控制器推送新视图控制器(即单击帖子)时。该应用程序设置如下:

Main是一个故事板,它是一个自定义类型的 UITabController,MainTabViewController它有 4 个选项卡,每个选项卡都有一个 UINavigationController,它有一个类型为 的容器BaseViewController

在我创建撰写按钮并将其作为子视图添加到键窗口的viewDidLoad功能中,如下所示:MainTabViewController

 func createButton(){
        let keyWindow = UIApplication.shared.keyWindow
        postButtonContainer = FanMenu...
        keyWindow?.addSubview(postButtonContainer)
 }
    

BaseViewController 我使用viewWillDisappear隐藏撰写按钮(即点击帖子时),然后viewWillAppear通过设置isHidden为真或假来显示撰写按钮。

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    ComposeButtonManager.shared.hidePostButton()
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    ComposeButtonManager.shared.showPostButton()
}

只有在我从 Xcode 启动后崩溃关闭应用程序后才会出现此问题。发生的事情是,当我在崩溃关闭后重新打开时 - 应用程序将正常加载并显示撰写按钮,但如果我从一个选项卡导航然后返回同一个选项卡,则撰写按钮不会显示。如果我单击帖子并导航回BaseViewController子类,该按钮将重新出现。我不确定为什么在标签栏切换后按钮隐藏,当所有 UIViewControllers 调用取消隐藏按钮时,他们的视图就会出现。

当我从 Xcode 在我的手机上运行该项目时,我可以切换选项卡并且按钮不会消失,它只会在我崩溃关闭并与 Xcode 断开连接后发生,不知道为什么会这样。

4

0 回答 0