在WWDC
2019上,Apple宣布了一种新的“卡式”外观模态演示,并带有内置手势,可通过向下滑动卡来消除模态视图控制器。他们还引入了新isModalInPresentation
属性,UIViewController
以便您可以选择拒绝这种解雇行为。
但是到目前为止,我还没有找到在SwiftUI中模拟这种行为的方法。使用.presentation(_ modal: Modal?)
,不,据我所知,让你以同样的方式禁止解雇手势。我还尝试将模式视图控制器放在内UIViewControllerRepresentable
View
,但这似乎也无济于事:
struct MyViewControllerView: UIViewControllerRepresentable {
func makeUIViewController(context: UIViewControllerRepresentableContext<MyViewControllerView>) -> UIHostingController<MyView> {
return UIHostingController(rootView: MyView())
}
func updateUIViewController(_ uiViewController: UIHostingController<MyView>, context: UIViewControllerRepresentableContext<MyViewControllerView>) {
uiViewController.isModalInPresentation = true
}
}
即使出现了,.presentation(Modal(MyViewControllerView()))
我仍然可以向下滑动以消除视图。当前是否可以使用现有的SwiftUI构造来做到这一点?
通过更改gesture priority
您不想拖动的DragGesture
任何视图的,可以防止出现在任何视图上。例如对于Modal,可以按以下方式完成:
也许这不是最佳做法,但是效果很好
struct ContentView: View {
@State var showModal = true
var body: some View {
Button(action: {
self.showModal.toggle()
}) {
Text("Show Modal")
}.sheet(isPresented: self.$showModal) {
ModalView()
}
}
}
struct ModalView : View {
@Environment(\.presentationMode) var presentationMode
let dg = DragGesture()
var body: some View {
ZStack {
Rectangle()
.fill(Color.white)
.frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
.highPriorityGesture(dg)
Button("Dismiss Modal") {
self.presentationMode.wrappedValue.dismiss()
}
}
}
}
问题内容: 我增加了一个,这似乎为。在关闭之前,我想验证的输入。基于验证,我想关闭还是不关闭。但是我不知道如何防止按下按钮时的关闭动作。有没有人解决了这个问题或从哪里开始的任何想法?我去了谷歌,但没有运气:/谢谢! 问题答案: 您是正确的:如果用户可以点击警报中的按钮,则警报将被关闭。因此,您要防止用户点击按钮!只需禁用UIAlertAction按钮即可。如果禁用了警报操作,则用户无法点击它以将其
我有一个视图控制器,这是导航控制器的rootVc。 我需要为rootview控制器隐藏导航栏,因此我使用以下方法来隐藏它并使其重新出现。 我基本上是在rootVc中隐藏导航栏,并为所有其他视图控制器显示它。 但当我移除导航栏时,我看到我的内容正在状态栏下扩展 有办法解决这个问题吗?
我在理解容器视图控制器的实现方式时遇到了一些麻烦。 我将一个容器拖到主视图控制器中,它会自动创建嵌入式视图控制器,并通过嵌入式segue连接。然后,我可以通过从主视图控制器访问它。 我有点困惑,在飞行中创建和使用这些。即我想用它作为警报视图。我是否只是初始化视图一次,然后在每次显示被触发时更改其内容?我应该调用或只是设置隐藏/动画视图进出? 发音有困难。希望有人会说新语,能理解我。
CodeIgniter 的开发基于 MVC(模型-视图-控制器)设计模式。MVC 是一种 用于将应用程序的逻辑层和表现层分离出来的软件方法。在实践中,由于这种分离 所以你的页面中只包含很少的 PHP 脚本。 模型 代表你的数据结构。通常来说,模型类将包含帮助你对数据库进行增删改查的方法。 视图 是要展现给用户的信息。一个视图通常就是一个网页,但是在 CodeIgniter 中, 一个视图也可以是一
模型视图控制器是最常用的设计模式。 开发人员发现实现这种设计模式很容易。 以下是模型视图控制器的基本架构 - 现在让我们看看结构是如何工作的。 模型 (Model) 它由纯应用程序逻辑组成,它与数据库交互。 它包括向最终用户表示数据的所有信息。 View View表示与最终用户交互的HTML文件。 它向用户表示模型的数据。 控制器 (Controller) 它充当视图和模型之间的中介。 它侦听由视
问题内容: 我正在尝试使用以下代码弹出到根视图控制器: 这通常可行,但是当当前视图是模式视图时,尝试使用此代码时出现错误。在这种情况下,我该如何跳回到根视图控制器? 提前致谢。 问题答案: 您可以检查当前控制器是否存在,如果存在,则将其关闭,然后直接转到当前控制器。