在另一个视图中嵌入自定义视图的适当MVC结构是什么?

时间:2017-04-26 04:39:00

标签: ios iphone swift uiview uiviewcontroller

考虑一下,这感觉就像是一个noob MVC问题,但我无法想出或找到一个明确的答案,所以我觉得我应该问一下并为自己弄清楚。

我有一个使用xib创建的自定义视图。它目前将在我的应用程序中的其他4个地方使用。每种用法都具有相同的功能,因此我基本上只是创建一个可以多次重复使用的自定义控件对象。

我的"控制对象"由UITextField和两个UIButtons组成。

我正在实现的功能是,第一个按钮将显示UIPicker,第二个按钮基本上是一个完成按钮,并且只是在UITextField上的resignFirstResponder。如前所述,这在任何地方都是一致的。

我很好奇的是,我可以直接将这个功能构建到自定义UIView子类中,因为它对我控制对象的所有实例都是一致的行为吗?或者,我是否需要创建一个自定义的UIViewController子类来与它一起使用?

目前,在我的应用程序的主要UIViewController中,我正在创建自定义UIView&#34;控制对象&#34;的实例。并将它们视为与任何其他控制对象相同。如果我实际上应该创建一个自定义的UIViewController类来配合它,那么,我还有更多关于我应该如何做的问题(除非有人可以指导我这个资源)< / p>

到目前为止,搜索网络并没有给我带来任何好处,而且从目前为止我在iOS开发中看到的所有东西,我已经获得了UIViewControllers真正只有一个主要的,可呈现的氛围。视图(占据整个屏幕..我可能会遗漏一些术语)。

我的直觉是在我描述的场景中不需要视图控制器,但如果可能的话,我想尝试进行某种确认。

2 个答案:

答案 0 :(得分:1)

基于你所说的一切,我认为不需要另一个视图控制器。考虑到这些操作是ViewControllers通常处理的东西,我可以看到答案可能有点不清楚,但我认为你会很好地让你的自定义视图自己处理这个问题。

如果您添加更多功能或更复杂的操作,那么也许是时候探索其他选项了,但现在我认为单一视图会没问题。

答案 1 :(得分:1)

没有银弹,所以没有方法绝对正确绝对错误。你在这里描述的只是改变其状态的观点。因此,将所有内容放在UIView子类中是完全可以的。它也符合KISS原则。

但是,据我所知,如果我错了,请更正我,自定义视图的输入 - 文本和选择器中的选取值并不会真正影响视图本身,而是{{1}它附在。因此,您需要将该输入传递给托管viewController。这可以通过具有默认实现的协议来实现。因此输入数据的处理只写一次,但可以附加到你想要的任何viewController