【问题标题】:View controller dismiss issue查看控制器关闭问题
【发布时间】:2020-01-22 08:22:21
【问题描述】:

我正在设置一个具有 Firebase 身份验证的新应用程序

当您是注册用户时,您可以创建和发布添加(项目)以便其他人可以看到它。但是,如果您没有登录用户,它会显示一个登录弹出窗口!有一个 DISMISS 按钮!

例如,我尝试创建一个 if 语句

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if segue.identifier == "itemToAddItemSeg" {
            let vc = segue.destination as! AddItemViewController
            vc.category = category!
            }
        }

    private func showItemView(_ item: Item) {

        let itemVC = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "itemView") as! ItemViewController
        itemVC.item = item

        self.navigationController?.pushViewController(itemVC, animated: true)  
    }

    //Mark: Load items
    private func loadItems() {
        downloadItemsFromFirebase(category!.id) { (allItems) in
            self.itemArray = allItems
            self.tableView.reloadData()   
        }
    }

    private func showLoginView() {
        let loginView = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "loginView") 
        self.present(loginView, animated: true, completion: nil)
    }  
}

需要实现哪些代码? - 所以如果我的showlogin 弹出来! 有人会按下关闭按钮它不会继续到AddItemViewCotroller

此外,它将保持在itemViewController的同一页面上

【问题讨论】:

  • 如果您正在显示登录视图并且用户按下 Dismiss,则不应进入应用程序,因为他们不会登录。问题中的大部分代码与登录或按下关闭按钮时发生的情况无关。你能澄清你在问什么或问题是什么吗?可能包括 loginViewController 中的代码,dismissButton Action?

标签: ios swift firebase dismiss dismissviewcontroller


【解决方案1】:

正如我之前所说,问题在于转换,如果我实现了错误的代码,我真的很抱歉!如果 Muser.curentUser() != nil

,问题出在我实现代码的地方

有一个更好的地方,当有人按下完成按钮时,他们会问他们是否是注册用户?在其他地方添加一个显示登录视图弹出窗口解决了这个问题对不起伙计们!!谢谢你,你是最好的,非常好的人,因为你试图帮助我!非常感谢!

【讨论】:

    【解决方案2】:

    斯威夫特 5

    dismiss(animated: true, completion: nil)
    

    关闭视图控制器以模态方式呈现的视图控制器。

    根据您提供的代码,我不知道您是如何调用您的解除函数的,但有一个实现解除方法的示例:

    func dismissButtonTapped() {
       dismiss(animated: true, completion: nil) 
    }
    

    同样,不确定您是如何调用函数的,但上面的示例应该足以引导您朝着正确的方向前进。

    这将关闭 showLoginView 并将用户保留在 itemViewController 上。

    既然您在道德上展示了您的 loginView,这应该可以解决问题。

    查看documentation 上的dismiss(animated:, completion:) 方法了解更多详情。

    【讨论】:

    • 在我使用的 cocoTouchCLass 中没有 Button 插座!我的问题不是当 showlogin 弹出时如何输入 DISMIS 按钮!有人会按下关闭按钮,它不会继续到 AddItemViewCotroller,而且它会留在 itemViewController 的同一页面上
    • 当有人按下关闭功能时,我需要它保持在同一页面(ItemViewControler)而不是转换到 AddItemViewController
    • 我已经用更好的解释编辑了我的答案。应该有帮助。
    • 编辑了我的答案。应该足以引导您朝着正确的方向前进。试一试,让我们知道它是否有效。
    • 在您的关闭按钮的 IBAction 中,按照 @swiftymaxx 的建议调用 dismiss(animated: true, completion: nil)
    猜你喜欢
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 2011-07-08
    • 2013-03-19
    • 1970-01-01
    相关资源
    最近更新 更多