【发布时间】:2021-06-21 21:54:16
【问题描述】:
我想为我的 UITableView 实现一些细节视图(使用 Storyboard)。因此,当单击单元格时,不会隐藏整个表格视图,而是从底部显示一个新的半屏详细信息视图。原型的附加屏幕。当点击单元格(灰色)时,屏幕上会从底部显示该单元格的详细信息。 任何帮助表示赞赏!
【问题讨论】:
标签: ios swift storyboard
我想为我的 UITableView 实现一些细节视图(使用 Storyboard)。因此,当单击单元格时,不会隐藏整个表格视图,而是从底部显示一个新的半屏详细信息视图。原型的附加屏幕。当点击单元格(灰色)时,屏幕上会从底部显示该单元格的详细信息。 任何帮助表示赞赏!
【问题讨论】:
标签: ios swift storyboard
这种方法有很多方法,但我将展示我为这种弹出视图所做的工作。
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
}
}
上面是我自动关闭的弹出视图,但您可以使用自己的方法通过点击关闭按钮来关闭
在辅助类或任何地方创建一个扩展作为 UIViewController 并实现以下功能
func showPopup() {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "customToastVC")
vc?.modalPresentationStyle = .overFullScreen
self.present(vc!, animated: true, completion: nil)
}
在父 tableView 中,您可以在 DidSelect 委托或您需要的任何地方使用如下扩展。
self.showPopup()
如果你想使用模糊视图或其他东西,请使用我使用的协议方法。
希望它能有所帮助。没时间为你的场景重写代码只是我代码中的一个例子
【讨论】: