【问题标题】:Half-screen details view from the bottom on click of UITableViewCell [closed]单击 UITableViewCell 时从底部查看半屏详细信息 [关闭]
【发布时间】:2021-06-21 21:54:16
【问题描述】:

我想为我的 UITableView 实现一些细节视图(使用 Storyboard)。因此,当单击单元格时,不会隐藏整个表格视图,而是从底部显示一个新的半屏详细信息视图。原型的附加屏幕。当点击单元格(灰色)时,屏幕上会从底部显示该单元格的详细信息。 任何帮助表示赞赏!

【问题讨论】:

    标签: ios swift storyboard


    【解决方案1】:

    这种方法有很多方法,但我将展示我为这种弹出视图所做的工作。

    1. 创建一个新的 ViewController 并将主视图颜色设置为清除并使用任何背景颜色创建您的视图,并为 UI 做任何您想做的事情

    import UIKit
    protocol CancelToastDelegate: class {
        func removeBlurredBackgroundView()
    }
    class customToastVC: UIViewController {
        weak var delegate: CancelToastDelegate?
        @IBOutlet weak var messageView: UIView!
        @IBOutlet weak var messageLabel: UILabel!
        var toastMessage: String?
        override func viewDidLoad() {
            super.viewDidLoad()
            self.setupMessageView()
            delegate?.removeBlurredBackgroundView()
            DispatchQueue.main.asyncAfter(deadline: .now() + 2.0, execute: {
                self.dismissToast()
            })
            // Do any additional setup after loading the view.
        }
      
        override func viewWillAppear(_ animated: Bool) {
            self.toastMessage = UserDefaults.standard.string(forKey: "kToastMessage")
            self.messageLabel.text = self.toastMessage ?? ""
        }
        override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
            self.dismissToast()
        }
        func dismissToast(){
            dismiss(animated: true, completion: nil)
            
        }
        
        func setupMessageView(){
            self.messageView.layer.cornerRadius = 5
            self.messageView.layer.borderColor = UIColor.appColor.customOrange.cgColor
            self.messageView.layer.borderWidth = 1
        }
    }
    

    上面是我自动关闭的弹出视图,但您可以使用自己的方法通过点击关闭按钮来关闭

    1. 在辅助类或任何地方创建一个扩展作为 UIViewController 并实现以下功能

      func showPopup() {
               let vc = self.storyboard?.instantiateViewController(withIdentifier: "customToastVC")
               vc?.modalPresentationStyle = .overFullScreen
               self.present(vc!, animated: true, completion: nil)
           }
      
    2. 在父 tableView 中,您可以在 DidSelect 委托或您需要的任何地方使用如下扩展。

    self.showPopup()

    如果你想使用模糊视图或其他东西,请使用我使用的协议方法。

    希望它能有所帮助。没时间为你的场景重写代码只是我代码中的一个例子

    【讨论】:

    • 非常感谢@Swiosift!我会尝试你的建议,稍后再告诉你结果,再次感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多