使用 UITableView 填充 UITabBar

Posted

技术标签:

【中文标题】使用 UITableView 填充 UITabBar【英文标题】:Using a UITableView to populate a UITabBar 【发布时间】:2018-07-30 04:30:27 【问题描述】:

我正在将我的单视图应用程序转换为基于选项卡的应用程序。我已经完成了大部分布局,所以我现在正在尝试连接所有组件,但我一直在试图弄清楚如何做两件事:

    当我从UITableView 中选择奖金时,我希望它打开我的第二个选项卡,其中包含所选行的信息。我不知道该怎么做。

    如果我直接转到其他选项卡之一,我希望它只显示UITableView 的第一个可见行的详细信息。我不确定如何设置这样的默认值。

我不确定您需要查看以上代码,但我使用的是 Xcode 9 和 Swift 4。我在 Google 上搜索并搜索了 YouTube 和 Stack Overflow,答案要么全部对于 Objective-C 或关于 UITabBar 模糊了最后一行 UITableView 数据(这不是我遇到的问题)。

编辑:我似乎已经通过更改我的prepare (for segue) 然后通过 Interface Builder 将 segue 从 UITableView 删除到选项卡的 viewController 来实现它的工作。但是,这仍然没有点亮 UITabBar 中的正确选项卡。此外,这仍然包含在原始导航控制器中。这允许我来回移动,但这不是意图。当我尝试删除导航控制器时,我不得不使用“显示”或“模态”类型的 segue,它覆盖了 UITabBar,并且无法退出详细视图。我想使用 UITabBar 来提供导航控制器用来处理的来回,这样我就可以获得屏幕顶部的空间。

【问题讨论】:

听起来你不需要标签视图来满足这些要求。它的基本导航视图(或拆分视图控制器)。但是如果你真的想使用标签栏,只需使用一些全局类(可能是单例,在 Swift 中非常容易)来保留数据源(数组或字典),并将所选行作为该类中的全局可访问参数,并使用 viewWillAppear 方法检查它并在显示每个视图时显示详细信息 应用程序的原始版本使用带有 UITableView 的导航控制器、包含 UIScrollView 来保存所有数据的详细视图,然后是设置视图。它是功能性的,但有点丑陋。新的设计理念是在第一个选项卡上显示奖金列表,然后第二个选项卡是捕捉它(拍照),第三个选项卡是关于该奖金的信息,第四个选项卡是设置。为了达到我现在的位置,我将现有的导航控制器嵌入到选项卡视图控制器中。并且已经开始将详细视图分成两半(捕获和信息)。 【参考方案1】:

最简单的可能是在第二个标签的视图控制器中注册一个通知中心观察者。每当您有要显示的项目时,只需从您的第一个选项卡的视图控制器触发通知,并将您需要显示的对象附加到通知中。

【讨论】:

我要让我的新手旗帜在这里高高扬起,并承认我不知道您所说的“注册通知中心观察员”是什么意思。这个链接看起来像我开始的正确路径吗? https://learnappmaking.com/notification-center-how-to-swift/ 我进一步调查,其中一条语句是“假设您有一个视图控制器 A 和一个视图控制器 B。当 B 显示在屏幕上时,您希望将一些数据从 A 传递到 B “你用通知中心吗?没有!”这似乎正是我想要做的。我真的只想让 UITableView 中的“cellForRowAt”触发 ViewController B 并显示与所选“cellForRowAt”相关的信息。 @DJFriar 对...但是您也尝试使用 UITabBar 来显示多个 ViewController,这些 ViewController 通常永久分配一次,因此换句话说,您不能轻易地重新实例化一个新的当您点击视图控制器 A 的单元格时。如果您对自己的问题有更好的解决方案,请随时分享! :)

以上是关于使用 UITableView 填充 UITabBar的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 json 数据填充 UITableview

使用 NSUserdefaults 填充 UITableView

使用 JSON 数据填充 UITableView

如何使用 JSON 数据填充 UITableView?

选择 UITableView 行时使用特定信息填充 UITextView

使用 UITableView 填充 UITabBar