Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Objective c 重复视图_Objective C_Cocoa - Fatal编程技术网

Objective c 重复视图

Objective c 重复视图,objective-c,cocoa,Objective C,Cocoa,我想创建一个视图,其中包含一些控件、一个文本字段和一些按钮,我想复制这些控件以将它们显示为选项卡视图中选项卡的内容。 每个选项卡都必须具有此视图的实例。 方向?嗯……我不确定我是否正确理解了你想做什么。“复制”这个词听起来不太好,因为在编程中,它通常表示一种“气味” 我不是cocoa的专家,也不是objective-c的专家,但我想你可以将控件放在某种容器控件中,并在选项卡视图或任何你喜欢的地方实例化(重用而不是复制)这个容器控件。克隆视图层次结构的快捷方法是对其进行编码和解码。例如: NSDa

我想创建一个视图,其中包含一些控件、一个文本字段和一些按钮,我想复制这些控件以将它们显示为选项卡视图中选项卡的内容。 每个选项卡都必须具有此视图的实例。
方向?

嗯……我不确定我是否正确理解了你想做什么。“复制”这个词听起来不太好,因为在编程中,它通常表示一种“气味”


我不是cocoa的专家,也不是objective-c的专家,但我想你可以将控件放在某种容器控件中,并在选项卡视图或任何你喜欢的地方实例化(重用而不是复制)这个容器控件。

克隆视图层次结构的快捷方法是对其进行编码和解码。例如:

NSData * encodedView = [NSKeyedArchiver archivedDataWithRootObject:myView];
NSView * myViewClone = [NSKeyedUnarchiver unarchiveObjectWithData:encodedView];

Dave DeLong很接近,您的问题在某种程度上包含了答案(“每个选项卡必须有一个视图实例”)。创建UIViewController子类以编程方式创建视图或加载NIB。然后实例化UIViewController子类的多个实例,并将它们全部添加到UIABViewController的viewControllers属性中


你会想花点时间和我在一起。您正在创建同一UIViewController子类的多个实例这一事实对解决方案几乎没有影响。

正如我所说:“每个选项卡都必须有此视图的一个实例”。无论如何,谢谢你无用的回答。@goo他说的是对的。您可以将视图构建为视图XIB,然后使用NSViewController多次实例化它(这是一种方法)。例如,如果视图设置了目标和操作,则除非目标也进行了编码,否则它们不会被复制。@Jon同意,因此“快速且肮脏”=)当然,这只适用于iPhone。在Mac上,您将改用NSViewController,我认为它和UIViewController的工作原理不太一样。NSViewController比UIViewController简单得多,但上面的原理应该是相同的。在NSViewController出现之前,我们在Mac上构建“视图控制器”已经有很长一段时间了(我相信您已经创建了很多自己的视图控制器)。让一个对象以编程方式构建视图(例如通过重载-loadView)的想法并不特定于iPhone,它仍然是管理基于NSSegmentedControl的tabview或其他Mac解决方案的合理方法。也就是说,在Mac上,您可以使用NSView子类而不是NSViewController来执行此操作。