单击 UITableViewCell 从底部查看半屏详细信息
Half-screen details view from the bottom on click of UITableViewCell
我想为我的 UITableView 实现一些细节视图(使用 Storyboard)。因此,当点击单元格时,并不是隐藏整个 table 视图,而是从底部显示一个新的半屏详细视图。附加屏幕的原型。在屏幕上,当点击单元格(灰色)时,该单元格的详细信息会从底部显示。
感谢您的帮助!
这种方法有很多方法,但我将演示我为这种弹出视图所做的工作。
- 创建一个新的 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
}
}
以上是我自动关闭的弹出视图,但您可以使用自己的方法通过点击关闭按钮关闭
在助手 class 或 UIViewController 的任何地方创建扩展并实现以下功能
func showPopup() {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "customToastVC")
vc?.modalPresentationStyle = .overFullScreen
self.present(vc!, animated: true, completion: nil)
}
在父 tableView 中,您可以在 DidSelect 委托中或任何需要的地方使用扩展,如下所示。
self.showPopup()
如果你想使用模糊视图或其他东西,请使用我使用的协议方法。
希望对您有所帮助。没有时间为你的场景重写代码只是我代码中的一个例子
我想为我的 UITableView 实现一些细节视图(使用 Storyboard)。因此,当点击单元格时,并不是隐藏整个 table 视图,而是从底部显示一个新的半屏详细视图。附加屏幕的原型。在屏幕上,当点击单元格(灰色)时,该单元格的详细信息会从底部显示。 感谢您的帮助!
这种方法有很多方法,但我将演示我为这种弹出视图所做的工作。
- 创建一个新的 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
}
}
以上是我自动关闭的弹出视图,但您可以使用自己的方法通过点击关闭按钮关闭
在助手 class 或 UIViewController 的任何地方创建扩展并实现以下功能
func showPopup() { let vc = self.storyboard?.instantiateViewController(withIdentifier: "customToastVC") vc?.modalPresentationStyle = .overFullScreen self.present(vc!, animated: true, completion: nil) }
在父 tableView 中,您可以在 DidSelect 委托中或任何需要的地方使用扩展,如下所示。
self.showPopup()
如果你想使用模糊视图或其他东西,请使用我使用的协议方法。
希望对您有所帮助。没有时间为你的场景重写代码只是我代码中的一个例子