在Storyboard中被多个视图控制器共同使用的常见视图

6
我已经阅读了iOS View Controller Programming Guide和iOS View Programming Guide,但无法找到在不重复我的代码或storyboard的情况下完成以下操作的最佳方法。
我正在为我的孩子们开发一个简单的数学教程程序,它有一个视图,在其中有一个“数字键盘”(0-9),以及一些动画的SKScene。
到目前为止,我只有一个viewcontroller来处理简单的加、减、乘和除问题,它运行良好。
我想在另一个viewcontroller中使用相同的数字键盘来处理长除和多位数乘法,但是我遇到了问题,无法重用NumberPad/SKScene视图。
我相信我可以从许多编程示例中以编程方式创建这个程序。但是,考虑到我可以轻松地布置控件,我更愿意使用界面生成器来实现这一点。

您可以将一个场景中的视图复制并粘贴到另一个场景中,但这样会创建两个该视图的实例。您想避免这种情况吗?您可以创建一个单独的视图(在xib中)或一个单独的视图控制器(在storyboard中,您将其添加为子控制器)并实例化它一次,但在不同的控制器之间移动时,可以将其添加和删除。我刚在这里回答了一个类似的问题,http://stackoverflow.com/questions/23728986/storyboard-how-to-link-a-single-view-to-multiple-container-views/23741784#23741784 - rdelmar
是的,我正在尝试避免剪切和粘贴。 - TJA
我也希望避免使用嵌入的视图控制器方法。也许我想做的事情不适合故事板。我应该直接创建一个处理NumPad显示的基类和一个定义需要重写的输入处理方法的协议(我认为是这样吧)。 - TJA
不,我认为它不太适合Storyboard,除非你想使用复制和粘贴。除非你在谈论大量的控制器,否则复制和粘贴有什么问题? - rdelmar
如果我将应用程序推进到我认为可能的程度,那么我们将涉及大约十几个不同的ViewControllers,这些ViewController都可以使用NumPad。我想我有点不愿意放弃InterfaceBuilder带给我的设计便利性。我也很喜欢storyboards的视觉自我记录特性,但曾经是汇编程序员的我不喜欢复制。 - TJA
1个回答

2
你考虑过ContainerView吗?ContainerView适用于在项目中为不同的视图控制器创建通用视图。如果你知道如何使用它,ContainerView非常强大。一旦我知道如何使用它,我就在我的项目中经常使用它。
昨天,有一个几乎相似的问题关于“所有视图控制器的通用UITableView?”,你可以在那里看到我的答案:- 如何为所有视图控制器创建通用UITableView? 这个链接也可能有帮助:iOS中如何使用“容器视图”?

好的,这可能会奏效。我怀疑之所以没有想到这个想法是因为其他容器(如导航和选项卡视图控制器)只占用屏幕顶部或底部的一小部分空间,而我的数字键盘在视图中特别是在横向模式下会推得很高。 - TJA
你可以尝试使用AutoLayout约束一起实现。通过正确的设置,我相信它在纵向和横向模式下都会表现良好。 - Ricky
谢谢。我有一些阅读要做。我将从https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html开始。 - TJA
没问题。如果我正确回答了你的问题,请不要忘记点赞并接受为答案。谢谢。 - Ricky
我怀疑我最终会使用故事板和编程转换的组合。我需要去试一试。 - TJA
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接