Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone一个控制器,多视图_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

iPhone一个控制器,多视图

iPhone一个控制器,多视图,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我对iPhone开发相当陌生,我想知道如何从一个控制器加载多个视图 我有着c#的背景,仍在努力了解ObjC和iPhone世界中的工作原理 作为我试图实现的一个基本示例,假设我有一个时钟控制器,时钟控制器有计算时间的基本方法 现在我想做的是让这个控制器能够呈现任何数量的支持ClockControllers底层接口的视图 假设我有一个视图将时钟呈现为数字输出,另一个视图将时钟呈现为模拟显示(我知道的基本示例) 如何做到这一点 对不起,如果这是一个非常基本的问题,但我在这方面是相当新的 提前感谢以下是

我对iPhone开发相当陌生,我想知道如何从一个控制器加载多个视图

我有着c#的背景,仍在努力了解ObjC和iPhone世界中的工作原理

作为我试图实现的一个基本示例,假设我有一个时钟控制器,时钟控制器有计算时间的基本方法

现在我想做的是让这个控制器能够呈现任何数量的支持ClockControllers底层接口的视图

假设我有一个视图将时钟呈现为数字输出,另一个视图将时钟呈现为模拟显示(我知道的基本示例)

如何做到这一点

对不起,如果这是一个非常基本的问题,但我在这方面是相当新的


提前感谢

以下是我对如何将MVC应用于您的示例的理解:
您在屏幕上绘制的时钟是内部视图,每个视图都有一个时钟视图控制器类实例的支持。这些控制器都与时钟模型交互,并根据需要更新其视图。在这个类中,将设置一个属性来确定时钟是数字的还是模拟的。

听起来您的“ClockController”实际上是一个模型/数据类。您可以仅拥有此模型类的一个实例,也可以为每个时钟视图控制器(如果它们有不同的时间)拥有一个实例。

在我的应用程序中,我有多个单个视图控制器的实例,然后使用不同或多个视图来显示UI。可以获取视图及其所有子视图,并使用addSubView将其添加到视图控制器中,然后使用removeFromSuperview删除该视图及其所有子视图。如果视图仅显示信息,并且被子类化以处理其自身与视图控制器必须处理的其他视图的差异,则这种方法非常有效。在您的情况下,模拟时钟视图必须以一种方式绘制自身,而数字时钟视图则以另一种方式绘制自身。控制器只需告诉每个视图时间是多少,视图就可以处理到可视数据的转换。如果视图接受用户拖动模拟指针设置报警的形式的输入,则视图子类需要读取该输入,然后转换为报警时间并将其传递回视图控制器。控制器不需要知道用户正在与哪种类型的时钟交互,只需要看到需要添加到其报警队列中的报警时间

但是,当我有使用非常不同的UI或用于不同目的的视图时,我通常更喜欢在每组视图中使用一个视图控制器。基本上,我尝试将我的视图用作显示器,将我的ViewController用作与该视图(以及可以由该数据支持的任何其他视图)相关的数据的管理器


例如,我的游戏有一个用于播放的视图控制器,另一个用于高分表,还有一个用于设置。

酷!谢谢你们的解释。这证实了我的想法。感谢addSubView参考,我将查看文档以了解使用详细信息。我想我的主要挑战将是适应事物如何结合在一起。。。另外,还要学会警惕地清理这些资源;-)