首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI NavigationBarItems slideBack冻结应用程序

SwiftUI NavigationBarItems slideBack冻结应用程序
EN

Stack Overflow用户
提问于 2019-12-15 14:16:44
回答 1查看 707关注 0票数 4

我的HomeView (存储Movies列表的地方)有NavigationViewNavigationLink,目的地是DetailView

当我想在我的DetailView中添加DetailView时,它会使我的GoBack幻灯片(从DetailViewHomeView)变得毫无用处。当我停止滑动屏幕的1/3时,应用程序就会结冰。

我在DetailView中没有额外的DetailView,因为当我拥有它时,它在DetailView中增加了一倍。

我发现代码行破坏了一切。

这是NavigationBarItems的一部分

代码语言:javascript
复制
.navigationBarItems(trailing: Button(action: {
    self.showingEditScreen.toggle()
}) {
    Image(systemName: "pencil")
    .imageScale(.large)
    .accessibility(label: Text("Edit Movie"))
    .padding()
})

HomeView

代码语言:javascript
复制
struct HomeView: View {
    @Environment(\.managedObjectContext) var moc

    @FetchRequest(entity: Movie.entity(), sortDescriptors: [
        NSSortDescriptor(keyPath: \Movie.title, ascending: true),
        NSSortDescriptor(keyPath: \Movie.director, ascending: true)
    ]) var movies: FetchedResults<Movie>

    @State private var showingAddScreen = false

    func deleteMovie(at offsets: IndexSet) {
        for offset in offsets {

            let movie = movies[offset]

            moc.delete(movie)
        }
        try? moc.save()
    }


    var body: some View {
        NavigationView {
            List {
                ForEach(movies, id: \.self) { movie in
                    NavigationLink(destination: DetailMovieView(movie: movie)) {
                        EmojiRatingView(rating: movie.rating)
                            .font(.largeTitle)
                        VStack(alignment: .leading) {
                            Text(movie.title ?? "Unknown Title")
                                .font(.headline)
                            Text(movie.director ?? "Unknown Director")
                                .foregroundColor(.secondary)
                        }
                    }
                }
                .onDelete(perform: deleteMovie)
            }
            .navigationBarTitle("Movie Store")
            .navigationBarItems(leading: EditButton(), trailing: Button(action: {
                self.showingAddScreen.toggle()
            }) {
                Image(systemName: "plus")
                    .imageScale(.large)
                    //.accessibility(label: Text("Add Movie"))
                    .padding()
            })
                .sheet(isPresented: $showingAddScreen) {
                    AddMovieView().environment(\.managedObjectContext,     self.moc)
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-26 09:03:38

这是SwiftUI当前的一个bug。如果您的.sheet和/或.alert在您的DetailView中,删除它们,它将正常工作,而不冻结应用程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59344756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档