在 UISplitViewController 中删除详细视图中的最后一个对象时应该做啥

Posted

技术标签:

【中文标题】在 UISplitViewController 中删除详细视图中的最后一个对象时应该做啥【英文标题】:In a UISplitViewController what should you do when you delete the last object in a detail view在 UISplitViewController 中删除详细视图中的最后一个对象时应该做什么 【发布时间】:2012-03-15 08:33:09 【问题描述】:

我有一个带有 rootViewController 表视图和一个 detailView 表视图的 SplitViewController。

rootViewController 包含的对象包含 DetailViewController 中的对象。如果 rootViewController 对象中没有对象,则删除 rootViewController 对象。

例如一个故事包含许多句子

如果您选择了一个故事,并且您删除了它包含在 detailViewController 中的最后一句话 - 您应该如何处理 detailViewController?故事成功从rootviewcontroller 中移除,但我不确定要在detailViewController 中做什么。在特定于 iPhone 的应用程序中,我只会将导航控制器从句子弹出到故事,但我不确定当 detailViewController 始终可见时该怎么做,因为它与 svc 一样。

我试过了:

将 detailViewController 设置为空白 tableview 将当前故事对象设置为空白

如果我选择什么都不做,我会得到一个 CoreData 异常:

CoreData:错误:严重的应用程序错误。捕获到异常 在调用期间从 NSFetchedResultsController 的委托 -controllerDidChangeContent:。尝试将第 7 行插入第 0 节,但在使用 userInfo 更新后第 0 节中只有 1 行 (空)

【问题讨论】:

【参考方案1】:

确保您的主视图控制器可以处理一个空列表并加载一个新的细节视图控制器,中间有一个标签,上面写着“无项目”。

尝试在 Mail 中创建一个新文件夹(“邮箱”)并进入它。

或者,如果删除所有内容意味着显示空列表没有用处,您也可以自动弹出到上一个导航级别。

【讨论】:

它可以处理一个空列表,因为它在全新安装时显示一个空列表 - 但我不确定在删除所有内容时如何将其重新设置为空列表。 细节视图控制器或主视图控制器的某些部分表现得好像总会有选择的东西,或者好像列表中总会有数据。修正这个假设。

以上是关于在 UISplitViewController 中删除详细视图中的最后一个对象时应该做啥的主要内容,如果未能解决你的问题,请参考以下文章

UISplitViewController:在 detailView 中导航

在 UISplitViewController 中使用 SwiftUI 列表侧边栏

UISplitViewController:为啥我不应该在导航或标签栏界面中显示它?

UISplitViewController 一致分隔符

在 UISplitViewController 中隐藏 MasterView

嵌套详细视图(UISplitViewController)中缺少后退按钮