解释前的总结
就好像 Storyboard将表格视为指向单个实例的指针,仅仅是因为我通过 Storyboard复制和粘贴。我在这里记录这个部分是为了提醒自己(我是 Stack Overflow 的狂热用户)和对他人的警告。当然,我想知道是否有一种简单的方法可以真正解开这两者,而无需从头开始重新创建一个 ViewController。 请继续阅读以获取解释。
背景故事
首先,我使用 Storyboard 创建了 CatUIViewController。我连同 .h 和 .m 文件一起完成了整个工作。然后,需要一个用于 Dogs 的类似 ViewController,我将一个空的 ViewController 从 Object Library 拖放到 Storyboard 上,然后我将整个 UITableView 从 CatUIViewController 复制并粘贴到 DogUIViewController。当然,我对 .h 和 .m 文件也做了同样的事情。 CatUIViewController 和 DogUIViewController 之间真正的唯一区别是 Cat 的标题中有两个按钮,而 dog 有一个 UIImageView,以及两个标题共享的其他数据。
很自然,当我粘贴到 Dog 等效项中时,Xcode 会为我完成所有连接。它自动连接所有的 IBOutlets 和 IBActions:Xcode 的一个很好的特性。
更多细节
两个表格 View 都有背景图片。并且从 Cat 到 Dog 的导航是可能的,因为我的应用程序使用的是 UITabBar——两者之间不存在其他链接。此外,当 Cat 引导其 Tab 时,Dog 位于其 Tab 的 NavigationController 中。
问题
问题是这样的:如果我在 DogUIViewController 并单击选项卡转换到 CatUIViewController,转换后 DogUIViewController 的背景显示为 CatUIViewController 的背景。事实上,如果我访问 DogUIViewController 然后导航到任何其他页面……第二次我单击 CatUIViewController 的选项卡,它神秘地首先显示 DogUIViewController 的数据,然后在大约 1 秒后切换到正确的数据。另一个奇怪的是,反过来也是一样的。
我一直在调查代码以查看可能是什么原因,但到目前为止我一无所获。就好像纠缠发生在 Xcode 中没有暴露给我的层:我查看了 Connections Inspector、.h 和 .m 文件,但我找不到到目前为止的任何事情。我希望这是我的一个简单的疏忽,所以我继续挖掘。但以防万一它不是并且其他人已经解决了类似的问题,我在这里问。
Best Answer-推荐答案 strong>
虽然您不仅复制并粘贴了 UITableView,而且还复制并粘贴了 .h 和 .m 文件,但出错的可能性比比皆是。但我特别感兴趣的是你提到的差异只存在于头文件中。这对我来说意味着错误的可能原因是您的数据源。无论您在哪里获取数据,都需要一秒钟的时间,以便新数据延迟到足以让旧数据显示出来。所以我以一个问题结束我的回答:你是如何获取数据的?你在缓存数据吗?你在打扫属性(property)吗?例如,如果您使用服务器通知来更新 View Controller ,则不推荐使用 viewDidUnload,因此我不会使用它来取消注册通知。在任何情况下,您都是您的数据源。
关于ios - XCode5 中两个 UITableView 之间的奇怪纠缠,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/25538152/
|