在接下来的教程中,我有以下代码来显示一个带有3个选项卡项的选项卡视图,当按下它们时,它们在三个不同的视图之间导航。这一切都很好,但是,我希望能够处理选择,并只显示视图2或3,如果满足某些条件。
有没有办法获得选定的值并检查它,然后检查我自己的条件,然后显示视图是否满足条件,或者如果没有显示他们目前无法使用该视图,则显示警报。
从本质上讲,我希望能够在选择值切换到视图之前拦截它,也许我需要重写所有这些,但这是我正在寻找的功能,因为这是我使用旧框架让我的前一个应用程序工作的方式。
@State private var selection = 1
var body: some View
{
我有一个EnvironmentObject“用户”,负责登录和获取用户数据。它在我的应用程序中的所有视图之间共享。一旦加载了用户数据,应用程序将视图从"LoginView“更改为”HomeView“。这个用户对象包含数据“userId”。
我有另一个名为“警报”的模型,应该在HomeView中初始化。警报将从服务器获取警报,但它需要用户的userId才能实际获取。如何从用户到警报共享这些数据?
struct HomeView: View {
@EnvironmentObject var user: User
@ObservedObject var alerts: Ale
半相关问题:SwiftUI ActionSheet does not dismiss when timer is running 在我正在处理的一个项目中,我目前遇到了警报问题。当有计时器在后台运行时,显示的警报不会消失。大多数情况下,它需要几次点击解散按钮才能消失。我已经在一个示例项目中用尽可能少的开销重新创建了这个问题。 我的主项目在尝试在不同视图上显示警报时出现此问题,但我无法在示例项目中重现此问题。通过在计时器正在运行的同一视图上切换警报,可以可靠地复制该问题。我还测试了从文本字段中删除绑定以阻止文本字段视图更新的方法。在第一次单击时,警报仍无法解除。我不确定是否有办法解决这个问题,
我设置了一个计时器来显示两个警报。第一个警报显示给用户一个警告:“嘿,您已经不活动了一段时间了,您还在这里吗?”如果他们点击“是”,它就会重置计时器。如果他们不点击警报按钮,在x时间之后,它会显示第二个警报通知他们的会话已经过期。他们点击OK,然后将它们从导航视图中移出并返回到主页。
这一切都工作得很好,但是XCode抛出的错误是:
[Presentation] Attempt to present <SwiftUI.PlatformAlertController: 0x7fc2fa031800> on <_TtGC7SwiftUI19UIHostingControllerG
我有一个视图,它调用一个警报,它是另一个较小的视图,每当显示第二个视图时,我都希望在单击外部时隐藏它。我怎么能这么做?
struct AlertView: View{
let screenSize = UIScreen.main.bounds
@Binding var alertIsShown: Bool
var body: some View{
VStack{
Button("Cancel") {
self.alertIsShown=false
我遇到了一个问题,我试图实现一个警报视图,以显示图像何时出错或有问题,以及何时按下submit按钮以显示警报视图。正如您在下面的代码中看到的,我正试图在if条件中实现一个警报视图?有没有可能谢谢你的帮助。 下面是我的代码: @State private var showsAlert = false
func uploadImage(image:UIImage){
if let imageData = image.jpegData(compressionQuality: 1){
let storag
我用SwiftUI创建了一个应用程序。
视图是结构体,但我需要知道视图控制器,因为需要它来呈现一些特殊的警报。
我看到在我的项目中有AppDelegate和SceneDelegate。
我发现了这个
let contentView = ContentView()
// Use a UIHostingController as window root view controller.
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowSc
我正在尝试使用SwiftUI和MVVM架构构建一个应用程序。我想让我的视图在它的ViewModel认为必要的时候给出一个警告--比如说,当它有了来自模型的某种新的结果时。因此,假设每当VM检测到一个新结果时,它就相应地设置它的status:
The ViewModel:
enum Status {
case idle
case computing
case newResultAvailable
}
class MyViewModel: ObservableObject {
@Published var status = Status.idle
..
我有一个视图,可以在其中向CoreData添加一个新条目。该条目的名称不能为null,这可以在ViewModel中看到。如果有人试图添加一个没有名称的新条目,则会出现一个错误。现在,每当错误出现时,它就会自我否定。
观点:
struct AddProductPopover: View {
@Environment(\.presentationMode) var presentationMode
@StateObject var prodPopViewModel = AddProductPopoverViewModel()
var body: some View {
Navigati