首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI [演示文稿]/试图提出对……的看法。它已经在呈现

SwiftUI [演示文稿]/试图提出对……的看法。它已经在呈现
EN

Stack Overflow用户
提问于 2021-04-20 14:31:25
回答 2查看 3.8K关注 0票数 9

我正在开发一个SwiftUI应用程序,并且出现了警告,可能是因为我忽略了这些警告。我想展示我收到的警告,我希望有人能指出我可能做错了什么。

以下是相关代码:

代码语言:javascript
复制
struct CustomListView: View {
    var localList:[SomeManagedObject], moc:NSManagedObjectContext
    @State var showingOtherView = false
    
    func handleCustomItem(_ argument: SomeManagedObject) {
        print(#function)
        self.showingOtherView.toggle()
        ..... Do useful things .....
    }
    
    var body: some View {
        List {
            ForEach(self.localList) {
                item in
                HStack {
                    Spacer()
                    Button(action: {
                        self.handleCustomItem(item)
                    })
                    {
                        Text(item.expression!)
                            .foregroundColor(Color.red))
                            .font(.headline)
                            .padding(.horizontal, 11).padding(.vertical, 15)
                    }.sheet(isPresented: $showingOtherView) {
                        OtherView()
                    }
                    Spacer()
                }
            }
        }
    }
}

这是OtherView的代码:

代码语言:javascript
复制
import SwiftUI
import CoreData

struct OtherView: View {

    var body: some View {
        Text("Hello OtherView")
    }
}

当我单击列表中的一个按钮并执行handleCustomItem()函数时,我可以在调试控制台中看到以下消息:

上呈现 (来自),它已经呈现了。2021-04-20 上呈现 (来自),它已经呈现了。.2021-04-20 上呈现 (来自),它已经呈现了。

如果一个人能看到一些东西,给我一个提示,告诉我我能做些什么,那就太好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-20 15:24:37

你的.sheet(isPresented: $showingOtherView) {ForEach里面。当您将showingOtherView设置为true时,ForEach中的所有工作表都将尝试呈现。那是一堆床单。

你想把它放在ForEach之外。

代码语言:javascript
复制
var body: some View {
    List {
        ForEach(self.localList) {
            item in
            HStack {
                Spacer()
                Button(action: {
                    self.handleCustomItem(item)
                })
                {
                    Text(item.expression!)
                        .foregroundColor(Color.red))
                    .font(.headline)
                    .padding(.horizontal, 11).padding(.vertical, 15)
                }
                Spacer()
            }
        }
    }
    .sheet(isPresented: $showingOtherView) { /// here should be fine
        OtherView()
    }
}
票数 12
EN

Stack Overflow用户

发布于 2022-03-27 17:54:38

我有同样的警告消息/错误,但我的理由不是太多的纸张,在您的情况下。我试着把一张又一张的纸呈现得太快了,就像这样:

代码语言:javascript
复制
naviViewModel.isSUModalPresented = false
naviViewModel.isPaidContentIntroPresented = true

我不得不把它改为:

代码语言:javascript
复制
naviViewModel.isSUModalPresented = false
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { // or even shorter
     naviViewModel.isPaidContentIntroPresented = true
}

现在它工作得很好。SwiftUI只需要几毫秒就能完成动画。

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

https://stackoverflow.com/questions/67180982

复制
相关文章

相似问题

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