【问题标题】:UIView vs UIViewControllerUIView 与 UIViewController
【发布时间】:2026-01-25 07:40:01
【问题描述】:
好的,所以我对 iphone 开发非常陌生,而且我的知识已经走得很远了。我只需要帮助决定如何将这 4-6 张图片编程到我的项目中。
我基本上想制作一本漫画书,用户可以从一张图片滑动到另一张图片。这些图片都应该在 UIVIEW 还是 UIViewController 中?
任何关于连接这些图片以便我可以添加触摸代码的提示都很棒!
【问题讨论】:
标签:
iphone
cocoa-touch
uiview
uiviewcontroller
【解决方案1】:
一个 UIViewController 不能显示任何东西;它只是协调 UIView 的显示。所以实际的图片将需要在 UIView 中完成。此外,您的 UIView 负责识别触摸、手势等。不过,这就是它结束的地方;程序的实际反应应该取决于 UIViewController。
换句话说,您将教 UIView 子类如何识别向左或向右滑动,一旦确定发生了滑动,它将通知您的 UIViewController 子类该事件。然后控制器将决定接下来要显示什么图片,并告诉视图进行设置。
这是Model-View-Controller 模式的一部分。这是 iPhone 开发中广为人知且广泛使用的模式,因此您可以好好阅读一下。
【解决方案2】:
图片需要添加(通过addSubview)到一个UIView对象或从UIView子类化的UIControl、UIScrollView等对象。
您可能不需要创建自己的视图类,例如 MyView。我发现创建自定义视图的唯一真正原因是为了提高效率或用于高度动态的内容,例如在视图中移动的文本或图像。如果您不打算实现函数 drawRect,请不要使用自定义视图。
您将想要继承 UIViewController。它将管理您的视图的行为,并且(通常)是组成它所控制的视图的最佳位置。
UIPageControl 可能是实现滑动行为的最简单方法,但它可能很棘手——请仔细阅读文档。
【解决方案3】:
您将同时使用两者。 Cocoa Touch 开发遵循 MVC(模型、视图、控制器)方法。它是一种分离代码逻辑和用户界面元素的方法。 UIView 是您处理外观的地方,UIViewController 是您处理事件的类。如果您想以最简单的方式浏览多页内容,请查看 UIPageControl。