Ios SwiftUI中的平面导航最佳实践

Ios SwiftUI中的平面导航最佳实践,ios,swiftui,Ios,Swiftui,所以我在读关于导航的文章。在SwiftUI中,对于分层导航,我们使用NavigationLink-视图。例如,平面导航是apple music中每首歌曲的视图 我的问题是: 我有一个解决方案,但我想知道什么是最佳实践解决方案 此外,我必须自己添加动画,而使用NavigationLink我可以“免费”获得动画。为什么过渡不起作用?我试图在跳过一首歌时获得与苹果音乐相似的动画效果 导入快捷界面 结构歌曲:可识别{ var id=UUID() 变量名称:String var cover=颜色(红色:D

所以我在读关于导航的文章。在SwiftUI中,对于分层导航,我们使用
NavigationLink
-视图。例如,平面导航是apple music中每首歌曲的视图

我的问题是:

  • 我有一个解决方案,但我想知道什么是最佳实践解决方案

  • 此外,我必须自己添加动画,而使用
    NavigationLink
    我可以“免费”获得动画。为什么过渡不起作用?我试图在跳过一首歌时获得与苹果音乐相似的动画效果

  • 导入快捷界面
    结构歌曲:可识别{
    var id=UUID()
    变量名称:String
    var cover=颜色(红色:Double.random(in:0…1),绿色:Double.random(in:0…1),蓝色:Double.random(in:0…1))
    }
    结构ContentView:View{
    变量歌曲:[歌曲]=[]
    init(){
    因为我在0…1000{
    self.songs.append(歌曲(名称:“歌曲\(i)”)
    }
    }
    @状态变量指数=0
    var body:一些观点{
    VStack{
    详细视图(歌曲:歌曲[索引])
    .transition(.不对称(插入:。移动(边:。前导),删除:。移动(边:。后导)))
    歌曲导航(索引:$index,totalSongs:songs.count)
    }.padding()
    }
    }
    结构详细视图:视图{
    宋:宋
    var body:一些观点{
    VStack{
    文本(歌曲名称)
    }.frame(最小宽度:0,最大宽度:。无穷大,最小高度:0,最大高度:。无穷大)。背景(歌曲。封面)
    }
    }
    结构导航:视图{
    @绑定变量索引:Int
    var totalSongs:Int
    var body:一些观点{
    HStack{
    按钮(“上一个”){
    withAnimation(){
    如果self.index>0{
    self.index-=1
    }
    }
    }
    垫片()
    按钮(“下一步”){
    withAnimation(){
    如果self.index!=self.totalSongs-1{
    自索引+=1
    }
    }
    }
    }
    }
    }
    

    我在post.yes@Asperi中提供的方法可能会对您有所帮助