【发布时间】:2020-09-01 00:46:45
【问题描述】:
【问题讨论】:
-
在 swiftui 中包装一个 UIAlertController 视图
-
@PranavKasetti 我知道,但我无法在其中使用 UIDatePicker。如果您能提供帮助,我将不胜感激。
-
自 5 个月以来没有人解决这个问题?
【问题讨论】:
Apple 实际上不鼓励你想要的东西(根据this answer)。这可能就是您自己找不到任何示例的原因。
这是一个可能的解决方案:
struct ContentView: View {
@State var selectedDate = Date()
static let formatter: DateFormatter = {
let formatter = DateFormatter()
formatter.setLocalizedDateFormatFromTemplate("yyMMddhhmm")
return formatter
}()
var body: some View {
VStack {
Text("Selected date: \(selectedDate, formatter: Self.formatter)")
Button("Show action sheet") {
self.showDatePickerAlert()
}
}
}
func showDatePickerAlert() {
let alertVC = UIAlertController(title: "\n\n\n\n\n\n\n\n\n", message: nil, preferredStyle: .actionSheet)
let datePicker: UIDatePicker = UIDatePicker()
alertVC.view.addSubview(datePicker)
let okAction = UIAlertAction(title: "OK", style: .default) { _ in
self.selectedDate = datePicker.date
}
alertVC.addAction(okAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel)
alertVC.addAction(cancelAction)
if let viewController = UIApplication.shared.windows.first?.rootViewController {
viewController.present(alertVC, animated: true, completion: nil)
}
}
}
这使用来自this answer 的"\n\n\n\n\n\n\n\n\n" hack。
【讨论】: