- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是一个关于 UIViewController
类及其在 iOS 应用程序中的适当角色的开放式问题。
我最近读了this article ,我部分同意作者的观点。与您的 View 和模型相关的每一点逻辑都不会最终被转储到 UIViewController
中显然很重要,但是单独构建所有 View 并使用委托(delegate)方法似乎有点极端访问操作。
我很好奇哪种设计在应用程序的内存和性能方面最有效(在处理移动应用程序时显然是一个重要的考虑因素)?正如帖子的作者指出的那样,Apple 似乎并不强烈反对将逻辑放在 UIViewController
中。
最终,我想知道正确的做事方式。那么问题来了, View 和与之相关的任何逻辑是否应该完全从VC中分离出来?我真的应该使用委托(delegate)与 UIViewController
通信吗?
最佳答案
View Controller 本质上并不是邪恶的,尽管它们发展成单一的困惑是很常见的,因为它们扩展起来非常方便。
…it seems a bit extreme to build all of your views separately and use delegate methods to access the actions.
将其视为将您的程序分解成更小的单元,无论它们是什么。在每种情况下都对 UIView
进行子类化并不是最好的解决方案(举一个例子)。
每个开发人员的容忍度都略有不同,并且因程序/案例而异,但识别和消除重复代码以及将您的程序分解为更小的单元非常容易。
我认为大多数类:
当然会有异常(exception)。
I'm curious about which design is most efficient in regards to the memory and performance of the app (clearly an important consideration when dealing with mobile apps)?
更重要的是,通过编写更多可重用的程序,您会收获很多。将更多的时间和精力投入到这些可重用的设计中,减少重复代码,并关注质量。将性能和内存写到您的设计中,这是一个值得关注的问题。通常,与令人生畏的新编写的、未经充分测试的单一 VC 相比,这将带来巨大的胜利。
Ultimately, I'd like to know the right way of doing things. So the question is, should the views and any logic associated with it be completely separated out of the VC? Should I really be using delegates to communicate with the UIViewController?
过度简化:不,如果您消除冗余代码、在适用的情况下关注可重用性并确保您的单元/类保持低复杂性,您就不必走那么远。绝对可以,在它们成长为单体类之前解决这些问题,无论它们是 VC 还是其他类型。
关于ios - UIViewController 有多邪恶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731711/
我希望能够在代码中布局我的 View Controller ,但可以看到界面构建器中显示的布局。 我知道我可以创建一个 UIView 子类,使其 IBDesignable,并将其分配给 View Co
我有一个父 UIViewController(MainVC)。从那里我有 2 个 segue 到 2 个 UIViewControllers:FirstVC(标识符:goFirstVC)和 Secon
我有一个导航 Controller 。第一个viewcontroller 是FirstViewController 的一种。当我在 FirstViewController 中点击一个按钮时,它会将第二
我有一个自定义的动画 UIViewController 过渡,似乎 iOS 中有一个错误会破坏横向布局。在主要动画方法中,我得到了横向和纵向 View 的混合。 (纵向 View 都是纵向的,所以没问
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
我有一个 UIViewController,里面有 UITabBar。我正在尝试模仿 UITabBarController。 My question is how do I set or a UIVi
是否有任何方便的方法来确定是否正在从处于后台模式的应用加载 View ? 在 3.X 中,我将依赖 viewDidLoad 进行一些初始化等操作,但是对于 4.X 而言情况并非如此,因为您不能依赖调用
我将主视图 Controller 作为带有 UICollectionView 的 View Controller ,并且填充了照片。 一旦一个单元格被点击,一个新的 View Controller 被
我有一个简单的 UIViewController(单点触控),在 UI 上有一个按钮。现在,我的用例很简单 - 我想在单击按钮时重新加载 UIViewController。在某些线程上,我读到我只需要
我在它上面有一个 UIViewController 1 UIButton(添加为 subview ),在我按下 Button(见下面的图 1)之后,在它上面添加了另一个 UIViewControlle
尝试为 iPad 制作基于 Storyboard的应用程序。在其中,我需要从开始屏幕 (UIViewController) 过渡到主屏幕 (UISplitViewController),然后再到全屏
我想调整 UIViewController 的大小在 Storyboard中,所以我可以使用它的 UIViewController作为弹出 View 。 在大多数网站上,我可以读到这些操作是: 拖一个
我正在尝试从 XIB 或 Storyboard加载 ViewModel 绑定(bind)的 ViewController(使用 MvvmCross 5.0.6)。我的应用程序的逻辑是,该 View C
我正在构建一个锻炼应用程序。我的 TableViewController 中有一系列练习,每个单元格显示不同的练习。单元格转到 UIViewController。在 UIViewController
我正在尝试从 XIB 或 Storyboard加载 ViewModel 绑定(bind)的 ViewController(使用 MvvmCross 5.0.6)。我的应用程序的逻辑是,该 View C
我有一个 UIViewController,它有一个模式窗口,我想在整个界面上展示它,包括 UITabBar。 我的应用程序层次结构是这样的: UITabBarController (A) ->
我想显示另一个 ViewController 的缩小“预览”在另一个 ViewController .这可能吗?不需要交互,因此它基本上可以是屏幕截图,但按比例缩小。我可以通过手动截屏并将其保存为图像
我正在开发一个应用程序,其中 UIViewController ( firstViewController ) 包含一些 UILabels , 一个 UIButton , 和 UIView ( sub
我的标签栏中有五个标签栏项目。第五项是弹出ViewController。因此,当我单击该按钮时,当前 Controller 中将显示一个弹出窗口。我使用 UIViewController 作为子类来实
我正在开发 iOS 应用程序。 我的应用程序有 6 个按钮,每个按钮都有每个标签栏控件。 so Main screen is [btn1] [btn2] [btn3] [btn4] [btn5] [b
我是一名优秀的程序员,十分优秀!