【问题标题】:ios13 settings bundle with child pane crashes Settings.app on real device带有子窗格的 ios13 设置捆绑包在真实设备上崩溃 Settings.app
【发布时间】:2019-12-20 06:32:57
【问题描述】:

使用 iPad mini4 (A1538),运行 iOS 13 beta 6,使用 XCode 11 beta 5... 使用 XCode 11 中的 Single View App 模板创建一个新的 iOS 项目。添加一个 Settings.bundle,其根目录仅包含两个项目:

  1. 子窗格
  2. 文本字段

创建一个子窗格 plist 文件,将其添加到 Settings.bundle 并通过其 Filename 属性将其链接到根子窗格条目,按照正常的 Apple Settings Bundle 指南。为子窗格创建两个项目:

  1. 组说明符(似乎是必需的,否则子窗格页面中根本不会显示任何内容)
  2. 文本字段

文本字段条目本身的名称、默认值等并不重要,随便选。构建应用程序并运行它。在模拟器上,Settings.app 将按预期工作 - 您可以导航到子窗格并查看其上的文本字段并与之交互。当您选择子窗格控件导航到它时,在真实设备上运行它会导致 Settings.app 崩溃。如果您从子窗格 plist 中删除所有控件,在我们的例子中是单个文本字段条目,它不会崩溃。添加除组说明符之外的任何条目似乎都会触发崩溃。这适用于 13 之前的 iOS 版本。

调试与发布版本无关紧要。似乎是一个新的 iOS 13 错误。有人可以重新创建并确认吗?列出了步骤,但如有必要,可以提供示例项目 - 我特意使用默认模板进行了最小的更改,以证明它不是 WOMM 类型的问题

【问题讨论】:

  • FYI 也向 Apple 提交了错误
  • 查看崩溃日志似乎他们现在使用 SwiftUI 来显示 Settings.bundle 的内容。所以他们重新实现了很多东西,有“忘记”一些较少使用的功能的风险。
  • 这似乎已在我运行 13.1 beta 的设备上得到解决。
  • 错误仍然存​​在于 13.1 beta 4
  • 错误仍然存​​在于 13.1 发布版本中 :(

标签: settings.bundle ios13


【解决方案1】:

我通过将子窗格上的表格视图样式更改为组样式来解决此崩溃问题。您只需要添加 1 个类型为 PSGroupSpecifier 的项目。

【讨论】:

    【解决方案2】:

    注意:一个导致 iOS 13 中设置崩溃的单独错误与在“PSTextFieldSpecifier”类型的项目中使用值类型“数字”有关。

    【讨论】:

    • 我们发生了崩溃,因为我们在转换为 NSString 之前将默认值作为 NSInteger 写入 PSTextFieldSpecifier。这一直有效到 iOS 13。
    • 从上面的评论中得到同样的问题
    • 这是我崩溃的原因。我将一个整数存储到使用设置中的文本字段表示的首选项中。进行手动字符串 int 转换修复它。
    【解决方案3】:

    有类似的问题。根据崩溃日志,异常是由 SwiftUI 引起的。

    不过,iOS 13.3 更新已修复此问题。

    【讨论】:

      猜你喜欢
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      相关资源
      最近更新 更多