视图中的内容和视图控制器中的内容是啥?

Posted

技术标签:

【中文标题】视图中的内容和视图控制器中的内容是啥?【英文标题】:What goes in the View and what goes in the View Controller?视图中的内容和视图控制器中的内容是什么? 【发布时间】:2011-02-26 17:16:08 【问题描述】:

我是 iPhone 编程新手,这将是我在这里的第一个问题。我有使用不同语言的经验,例如 php/java/c++。

我的问题是关于 ios 中的 ViewControllers 和视图。

我已经开始了一个项目,其中将包含几个不同的内容,例如登录屏幕、主屏幕和其他几个屏幕。该项目的目标是学习如何以编程方式创建所有内容,而不是使用界面构建器来更习惯于系统。我正在使用这本书:“高级 iOS 4 编程”来帮助我。

我已经能够创建所有屏幕(并且登录之类的东西可以正常工作),但我不确定我是否正确。

我用于创建文本字段/标签/按钮的所有代码现在都位于 ViewController 中,而放置所有内容的主视图几乎是空的,其中没有任何操作。创建文本字段和其他组件的代码不应该位于视图本身中,还是这是正确的方法?

我看过几个不同的例子,但大多数都使用界面构建器。书本身在这件事上也不是很清楚。

提前致谢。

亲切的问候, 碧玉

【问题讨论】:

“这个项目的目标是学习如何以编程方式创建所有内容,而不是使用界面生成器来更习惯于系统。”如果你想学习这个系统,你应该学习如何使用 Interface Builder。太多第一次使用 iPhone 的开发者害怕 IB,其实他们应该拥抱它。 @Joe 我认为您根本不需要在目标 c 中使用 IB(在构建 iphone 应用程序时),或者您应该首先成为 IB 大师才能掌握该语言。根据您的要求选择使用其中一个是一个问题。事实上,来自不同平台的程序员都擅长处理代码中的视图。 IB有它自己好的一面,他只是还不知道,但至少他正在努力学习一些东西,你不认为我们应该鼓励他。 @Joe 如果你看看 brad larson 的应用程序分子,他根本没有使用 IB。它是一个小屏幕,你不能做太多事情。只是一些基本的东西。 大家好!我尝试从界面生成器开始,但我不知道我在做什么将所有对象连接在一起。这也是因为我不了解视图和视图控制器的基本概念。编写代码有助于我了解底层系统,因此我可以(将来)使用界面生成器,因为这样我会更清楚我在做什么。 【参考方案1】:

视图中,您拥有视图 - 换句话说,就是人类用户用他们的眼球看到的内容。

因此,例如,如果您要进行复杂的绘图,您将拥有自己的自定义 drawRect: 方法,例如在视图中。

另一方面......

视图控制器中,您拥有控制视图的东西。

一般来说,“一切”都在视图控制器中。

当您第一次开始为 iPhone(或 Mac)编程时,只需将所有内容都放在视图控制器中,不要太担心。有很多东西要学。好吗?

最终,将“实际绘图”单独分离到视图中。

希望这个对初学者的简单解释有所帮助!

【讨论】:

您好乔,感谢您的回复。你所说的“实际绘图”是什么意思? (这是否也意味着在屏幕上绘制文本框和其他东西,或者你的意思是用石英绘制)? 谢谢乔,这让事情变得清晰。因为我认为自定义 UIView 文件是 xib 文件的替代品,所以我的印象是所有组件都需要放在 UIView 文件中。【参考方案2】:

在简单的控制器代码中应该包含类似...的方法

class myLoginController : NSObject

UIView *myView;


-(void) initLoginController
-(void) loadLoginViewInView :(UIView*)inView;
-(void) removeLoginView;
-(void) isViewLoaded;
-(void) submitButtonClicked : (id) button;
-(BOOL) isLoginSuccess;

和 initLoginController 你可以创建你的视图,

-(void) loadLoginViewInView :(UIView*)inView

[inView addSubview:myView];

在 removeLoginView 中,您可以从其 superView 中删除“myView”。

【讨论】:

以上是关于视图中的内容和视图控制器中的内容是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据文本视图内容大小设置滚动视图中的启用或禁用滚动?

TabBar 覆盖导航堆栈中的视图控制器内容

如何根据集合视图中的单元格选择来控制表格视图的内容?

一个视图控制器中的两个 tableviews 和 tableviews 的高度应该等于它的内容

Flux 架构中的控制器视图是啥?

无法将内容添加到 IB 视图控制器中的自定义表格视图单元格