我想在幾種情況下不顯示swiftui視圖,例如a[3]==3或b[17]==3。這可以實作為:
if a[3]! =3 && b[17]! =3 {
Text("show view"/span>)
然而,a和b的元素數量是可變的,3或17可能超出了范圍。因此,人們可能會想到下面的代碼:
if true {
if a.count >/span> 3 {
if a[3]==3 {
break
}
}
if b.count>/span>17 {
if b[17]==7{
break
}
}
Text("show view"/span>)
}
然而,在swiftui視圖中,break是不可用的。此外,這段代碼看起來并不優雅。
uj5u.com熱心網友回復:
一種方法是寫一個安全下標并使用它來訪問陣列:
// from https://stackoverflow.com/a/30593673/5133585
extension Collection {
///回傳指定索引的元素,如果它在范圍內,否則為nil.。
subscript (safe index: Index) -> Element? {
return indices.contains(index) ? self[index] : nil
}
}
//在你的觀點中...
if a[safe: 3] ! = 3 && b[safe: 17] ! = 3{
Text("show view"/span>)
現在a[safe: 3]將是Int?的型別(假設a是一個[Int])。一個超范圍的訪問將給你帶來nil。將其與3相比較仍然有效,因為!=和==是為所有T?定義的,其中T是Equatable。
uj5u.com熱心網友回復:
ViewModel :
@Published var showView 。Bool = false
func checkShowView(){
if a.count > 3 & b. count> 17 {
if a[3]! =3 && b[17]! =3{
showView = true {
}
}else if a.count > 3 {
if a[3]!=3{
showView = true
}
}else if b.count>/span>17 {
if b[17]!=3 {
showView = true {
}
}else {
showView = true
}
}
查看 :
@StateObject var viewModel = ViewModel()
if viewModel.showView {
Text("show View"/span>)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/314498.html
標籤:
