【发布时间】:2026-01-29 18:55:01
【问题描述】:
解释前的总结
就好像故事板将表格视为指向单个实例的指针,仅仅是因为我通过故事板复制和粘贴。我在这里记录这个部分是为了提醒自己(我是 Stack Overflow 的*用户)和对他人的警告。当然,我想知道是否有一种简单的方法可以真正解开这两者,而无需从头开始重新创建一个 ViewController。 请继续阅读以获取解释。
背景故事
首先,我使用情节提要创建了 CatUIViewController。我连同.h 和.m 文件一起完成了整个工作。然后,需要一个类似的用于 Dogs 的 ViewController,我将一个空的 ViewController 从 Object Library 拖放到情节提要上,然后我将整个 UITableView 从 CatUIViewController 复制并粘贴到 DogUIViewController。然后当然我对.h 和.m 文件做了同样的事情。 CatUIViewController 和 DogUIViewController 之间真正的唯一区别是 Cat 的标题中有两个按钮,而 dog 有一个 UIImageView,以及两个标题共享的其他数据。
很自然,当我粘贴到 Dog 等效项中时,Xcode 会为我完成所有连接。它自动连接所有的 IBOutlets 和 IBActions:Xcode 的一个很好的特性。
更多细节
两个表格视图都有背景图片。并且从 Cat 到 Dog 的导航是可能的,因为我的应用程序使用的是 UITabBar——两者之间不存在其他链接。此外,当 Cat 引导其 Tab 时,Dog 位于其 Tab 的 NavigationController 中。
问题
问题是这样的:如果我在 DogUIViewController 并单击选项卡转换到 CatUIViewController,转换后 DogUIViewController 的背景显示为 CatUIViewController 的背景。事实上,如果我访问 DogUIViewController 然后导航到任何其他页面……第二次我单击 CatUIViewController 的选项卡,它神秘地首先显示 DogUIViewController 的数据,然后在大约 1 秒后切换到正确的数据。另一个奇怪的是,反过来也是一样的。
我一直在调查代码以查看可能是什么原因,但到目前为止我一无所获。就好像纠缠发生在 Xcode 中没有暴露给我的层:我查看了 Connections Inspector、.h 和 .m 文件,但到目前为止我找不到任何东西。我希望这是我的一个简单的疏忽,所以我继续挖掘。但以防万一它不是并且其他人已经解决了类似的问题,我在这里问。
【问题讨论】:
-
问问题的方式真是太美了。太糟糕了,答案可能对你没有任何好处。看起来这是一个故事板错误,并且有很多这样的错误。无论如何,阅读愉快。
-
您可以在 Xcode 中控制或右键单击右舷并将其显示为“源” - 这将显示底层 XML 文档,并可能让您查看是否有不应该出现的东西
-
@Paulw11 有什么特别值得我寻找的吗?没有什么能让我兴奋。到目前为止所有的 id 都是不同的。
-
故事板的工作方式并没有什么神奇之处——当你实例化一个 VC 时,适当的块被传递给
initWithCoder方法,所以如果你在你的“狗”场景那么您的问题可能是在运行时视图控制器层次结构中的损坏 - 如果您操作标签栏的 vc 属性直接仔细查看该代码。
标签: ios iphone uitableview storyboard xcode5