[英]NavigationLink not working on first element
我正在使用 searchable 來顯示與搜索的名稱匹配的用戶。
發生的情況是,如果我在類似搜索中有名稱(即 Sarah 和 Sara)並且這兩個名稱同時顯示,則第一個 navigationLink 是不可點擊的。 我將在下面發布一個屏幕截圖作為示例。 同時,第二個,第三個等工作正常。
(作為說明,我認為我的鼠標 cursor 沒有出現在 GIF 上,但我點擊了第一個按鈕,但沒有結果)。
struct FollowingListRow: View {
var body: some View {
HStack{
Image("exampleImage")
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width:60, height: 60)
.clipShape(Circle())
.padding(.trailing, 45)
VStack{
Text("Test")
.font(.title2)
NavigationLink(destination: TestView()){
Text("View Profile")
.font(.caption)
.foregroundColor(.black)
.padding(3) //general padding
.padding([.leading, .trailing], 15) // << side padding
.border(.black)
.padding(.top, -5) // <<bring up button
}
}
}
.padding()
}
}
struct FollowingListView: View {
@State var allUsers = ["Sara", "Sarah", "Teddy", "Jill"]
@State private var userSearch = ""
var body: some View {
NavigationView{
VStack{
//DISPLAY USERS
ScrollView{
ForEach ((allUsers), id:\.id ) { user in
if user.name.contains(userSearch){
FollowingListRow()
}
}
}
}
.padding(.top, 15) // << add separation from list and search bar
.navigationBarTitle("Search Users")
//SEARCH
.searchable(text: $userSearch,placement: .navigationBarDrawer(displayMode: .always), prompt: "Search for Users") // << always display search bar
}
}
struct FollowingListRow: View {
//MARK: - PROPERTIES
var name: String
//MARK: - BODY
var body: some View {
HStack{
Image("exampleImage")
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width:60, height: 60)
.clipShape(Circle())
.padding(.trailing, 45)
VStack{
Text(name)
.font(.title2)
NavigationLink(destination: Text("\(name)")){
Text("View Profile")
.font(.caption)
.foregroundColor(.black)
.padding(3) //general padding
.padding([.leading, .trailing], 15) // << side padding
.border(.black)
.padding(.top, -5) // <<bring up button
}
}
}
.padding()
}
}
struct FollowingListView: View {
@State private var allUsers: [User] = [
User(name: "Sara", id: 1),
User(name: "Sarah", id: 2),
User(name: "Teddy", id: 3),
User(name: "Jill", id: 4)
]
@State private var userSearch = ""
var body: some View {
NavigationView{
VStack{
//DISPLAY USERS
ScrollView{
ForEach (allUsers, id:\.id ) { user in
if user.name.contains(userSearch){
FollowingListRow(name: user.name)
}
}
}
}
.padding(.top, 15) // << add separation from list and search bar
.navigationBarTitle("Search Users")
//SEARCH
.searchable(text: $userSearch,placement: .navigationBarDrawer(displayMode: .always), prompt: "Search for Users") // << always display search bar
}
}
}
//User Model
struct User{
var name: String
var id: Int
}
為了測試目的,我用虛擬數據修改了你的代碼。 但導航工作正常。 請檢查您的目標測試視圖。問題可能在那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.