我有以下观点(去掉不相关的部分):
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 更是如此,我是否缺少某种应该在这里使用的特殊技术?
我在我的代码中从导航栏按钮显示一个模式表:
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)
但是导航栏没有出现在模态表中,如下所示。
我做错了什么,你如何在模态表上放置导航栏?
因此,该方法SignInManager.PasswordSignInAsync有一个最后一个参数lockoutOnFailure,如果该参数为真,则会在用户输入错误凭据时锁定用户。但是已经有一个名为的属性MaxFailedAccessAttempts,它在(默认情况下)5 个成功事件之后锁定用户。
我在这里有些困惑,无法根据第 4 个参数找到此方法如何工作的答案。如果已经设置了何时锁定的选项,为什么我们需要设置 lockoutOnFailure?我不想将其设置为 true。
我如何理解它的工作原理:
如果lockoutOnFailure: true,那么即使这是用户第一次尝试登录,如果他们输入错误的凭据,他们也会被锁定。如果lockoutOnFailure: false,那么即使这是他们的第 5 次尝试,如果他们输入了错误的凭据,他们也不会被锁定。我不希望这两种情况都发生,所以我不想将它设置为任何一个值。我该怎么办?还是我理解的方法不对?
根据文档,.OnEnded事件处理程序将LongPressGesture在成功检测到时触发。当用户在检测到手势后停止按下时,如何触发事件?
下面是一个例子:
用户按下例如 2 秒。
** 有东西出现 **
用户再过 2 秒后释放
** 东西消失了 **
当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)
该行永远不会返回(我猜是由于死锁或其他原因)。如果要在构造函数中执行此行,我还有什么其他选择?