小编iSp*_*n17的帖子

更改 @State 变量不会更新 SwiftUI 中的视图

我有以下观点(去掉不相关的部分):

struct Chart : View {
    var xValues: [String]
    var yValues: [Double]
    @State private var showXValues: Bool = false

    var body = some View {
        ...
        if showXValues {
            ...
        } else {
            ...
        }
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我想添加一种从外部修改这个值的方法,所以我添加了一个函数:

func showXValues(show: Bool) -> Chart {
    self.showXValues = show
    return self
}
Run Code Online (Sandbox Code Playgroud)

所以我像这样从外部构建图表视图:

Chart(xValues: ["a", "b", "c"], yValues: [1, 2, 3])
    .showXValues(true)
Run Code Online (Sandbox Code Playgroud)

但它的工作方式就好像该值仍然为假。我究竟做错了什么?我认为更新 @State 变量应该更新视图。总的来说,我对 Swift 很陌生,对 SwiftUI 更是如此,我是否缺少某种应该在这里使用的特殊技术?

ios swift swiftui

11
推荐指数
2
解决办法
2万
查看次数

SwiftUI 中的模态表可以有导航栏吗?

我在我的代码中从导航栏按钮显示一个模式表:

struct MainPage : View {

    @State var isModalSheetShown: Bool = false

    var body: some View {
        VStack {
            [...]
        }
        .navigationBarItems(trailing: HStack {
            Button(action: { self.isModalSheetShown = true }) {
                Text("Add")
            }
        })
        .sheet(isPresented: $isModalSheetShown, content: {
            VStack {
                [...]
            }
            .navigationBarItems(trailing: HStack {
                Button(action: { ... }) {
                    Text("Done")
                })
            })
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

但是导航栏没有出现在模态表中,如下所示。

在此处输入图片说明

我做错了什么,你如何在模态表上放置导航栏?

ios swift swiftui

11
推荐指数
1
解决办法
5593
查看次数

PasswordSignInAsync() 和 MaxFailedAccessAttempts 究竟是如何连接的?

因此,该方法SignInManager.PasswordSignInAsync有一个最后一个参数lockoutOnFailure,如果该参数为真,则会在用户输入错误凭据时锁定用户。但是已经有一个名为的属性MaxFailedAccessAttempts,它在(默认情况下)5 个成功事件之后锁定用户。

我在这里有些困惑,无法根据第 4 个参数找到此方法如何工作的答案。如果已经设置了何时锁定的选项,为什么我们需要设置 lockoutOnFailure?我不想将其设置为 true。

我如何理解它的工作原理:

如果lockoutOnFailure: true,那么即使这是用户第一次尝试登录,如果他们输入错误的凭据,他们也会被锁定。如果lockoutOnFailure: false,那么即使这是他们的第 5 次尝试,如果他们输入了错误的凭据,他们也不会被锁定。我不希望这两种情况都发生,所以我不想将它设置为任何一个值。我该怎么办?还是我理解的方法不对?

c# asp.net-core asp.net-core-identity

3
推荐指数
1
解决办法
1035
查看次数

当用户在 SwiftUI 中停止长按手势时如何触发事件处理程序?

根据文档,.OnEnded事件处理程序将LongPressGesture在成功检测到时触发。当用户在检测到手势后停止按下时,如何触发事件?

下面是一个例子:

  • 用户按下例如 2 秒。

  • ** 有东西出现 **

  • 用户再过 2 秒后释放

  • ** 东西消失了 **

ios swift swiftui

3
推荐指数
2
解决办法
1502
查看次数

.Result()使方法挂起时,如何在构造函数中使用异步方法?

当Xamarin.Forms项目中出现页面时,我有一个AppearingCommand调用,该页面最终执行以下sqlite-net-pcl行:(我已经有一种应对加载时间的机制)

AppearingCommand = new Command( async() => {
    //...
    var data = await db.Table<PlantCategory>().ToListAsync();
    //...
}
Run Code Online (Sandbox Code Playgroud)

我想将此方法移到构造函数中,但我不能这样做,因为如果同步执行它会挂起:

ctor() {
    //...
    var data = db.Table<PlantCategory>().ToListAsync().Result;
    //...
}
Run Code Online (Sandbox Code Playgroud)

该行永远不会返回(我猜是由于死锁或其他原因)。如果要在构造函数中执行此行,我还有什么其他选择?

c# sqlite mvvm xamarin.forms sqlite-net-pcl

0
推荐指数
1
解决办法
54
查看次数