You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI新自定义工具栏在Catalyst环境下崩溃求助

SwiftUI工具栏在Catalyst环境下崩溃问题

我正在试用SwiftUI中的新工具栏,发现它在Catalyst环境下存在问题(iPad端运行正常)。请问是否有其他开发者遇到相同问题?

以下是我的代码:

import SwiftUI

struct ContentView: View {
    var body: some View {
    
    NavigationStack {
        List {
            Text("1")
            Text("2")
            Text("3")
            Text("4")
            Text("5")
        }.toolbar(id: "ytuj") {
            
            ToolbarItem(id: "1", placement: .primaryAction) {
                Image(systemName: "heart")
            }
            
            ToolbarItem(id: "2", placement: .primaryAction) {
                Image(systemName: "heart")
            }
            
            ToolbarItem(id: "3", placement: .secondaryAction) {
                Image(systemName: "heart.fill")
            }
            
            ToolbarItem(id: "4", placement: .secondaryAction, showsByDefault: false) {
                Image(systemName: "heart.fill")
            }
            
        }.toolbarRole(.editor)
     
    }
  }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
   }
}

在Catalyst环境下运行时,尝试自定义工具栏会导致崩溃。是不是我的代码存在问题?

补充说明:以下是崩溃的错误信息,这只是一个简单的示例程序,情况非常奇怪!

*** Assertion failure in -[NSPasteboardItem setPropertyList:forType:], NSPasteboardItem.m:210


解答

  • 这是SwiftUI Catalyst的已知兼容性Bug,和你的代码逻辑无关,已有不少开发者反馈过相同问题。触发原因是同时给工具栏设置id参数和.toolbarRole(.editor)时,会引发NSPasteboard相关的断言崩溃。
  • 临时修复方案:
    1. 移除工具栏的id参数,将.toolbar(id: "ytuj") { ... }改为.toolbar { ... }
    2. 如果必须保留工具栏ID,可以尝试去掉.toolbarRole(.editor),使用默认的工具栏角色
    3. 升级到最新版本的Xcode和系统SDK,苹果后续更新大概率会修复该问题

内容的提问来源于stack exchange,提问作者gm_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:05:26