ios - XCode5 中两个 UITableView 之间的奇怪纠缠

标签 ios iphone uitableview storyboard xcode5

先总结再解释

就好像 Storyboard 将表格视为指向单个实例的指针,仅仅是因为我在 Storyboard 中进行了复制和粘贴。我在这里记录下来,部分是为了提醒自己(我是 Stack Overflow 的狂热用户),同时也是对其他人的警告。当然,我想知道是否有一种简单的方法可以真正分离这两者,而不必从头开始重新创建其中一个 ViewController。 请继续阅读以获取解释。

背景故事

首先,我使用 Storyboard创建了 CatUIViewController。我连同 .h.m 文件一起完成了整个过程。然后,需要一个类似的 Dogs ViewController,我将一个空的 ViewController 从对象库拖放到 Storyboard上,然后我将整个 UITableView 从 CatUIViewController 复制并粘贴到 DogUIViewController。然后我当然对 .h.m 文件做了同样的事情。实际上,CatUIViewController 和 DogUIViewController 之间的唯一区别是 Cat 在其标题中有两个按钮,而 dog 有一个 UIImageView,以及两个标题共享的其他数据。

自然地,当我粘贴到 Dog 等效项时,Xcode 会为我完成所有连接。它自动连接所有 IBOutlets 和 IBActions:Xcode 的一个很好的特性。

更多细节

两个 TableView 都有背景图片。从 Cat 到 Dog 的导航是可能的,因为我的应用程序正在使用 UITabBar——两者之间不存在其他链接。此外,虽然 Cat 领导其 Tab,但 Dog 在其 Tab 的 NavigationController 中处于领先地位。

问题

问题是这样的:如果我在 DogUIViewController 中并单击选项卡以转换到 CatUIViewController,转换后 DogUIViewController 的背景显示为 CatUIViewController 的背景。事实上,如果我访问 DogUIViewController 然后导航到任何其他页面……第二次我单击 CatUIViewController 的选项卡,神秘地它首先显示 DogUIViewController 的数据,然后大约 1 秒后切换到正确的数据。另一个奇怪之处在于,反过来也同样成立。

我一直在调查代码以查看可能的原因,但到目前为止我一无所获。就好像纠缠发生在 Xcode 中未向我公开的层:我查看了 Connections Inspector、.h.m 文件,但我找不到到目前为止的任何事情。我希望这是我的一个简单疏忽,所以我会继续挖掘。但以防万一它不是并且其他人已经解决了类似的问题,我在这里问。

最佳答案

虽然您不仅复制并粘贴了 UITableView,还复制并粘贴了 .h.m 文件,但出错的可能性比比皆是。但我特别感兴趣的是,您提到了仅存在于头文件中的差异。这对我来说意味着错误的可能原因是您的数据源。无论您在哪里获取数据,都需要一瞬间,以便新数据的延迟刚好足以让旧数据显示出来。所以我以一个问题结束我的回答:你是如何获取你的数据的?你在缓存数据吗?你在打扫属性(property)吗?例如,如果您正在使用服务器通知来更新您的 View Controller ,则不推荐使用 viewDidUnload,因此我不会使用它来注销通知。在任何情况下,您都在您的数据源处。

关于ios - XCode5 中两个 UITableView 之间的奇怪纠缠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25538152/

相关文章:

ios - 如何根据 View 图层的颜色更改状态栏颜色

ios - 如何调试 'unrecognized selector sent to instance' 错误

ios - 我可以为 iPhone 和 iPad 提供两个单独的应用程序吗?

iphone - UIPanGestureRecognizer 距离

objective-c - UITableViewCell 的 backgroundView 重叠 contentView

ios - 无法推断通用参数

iphone - glDrawArrays 因 EXC_BAD_ACCESS 崩溃

iphone - 日历中的EKEvent如何设置不闹钟

ios - 数学不相加 - UITableView 删除行错误

ios - UITableViewCell 中的动画立即完成