Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 在Cocoa中使用表作为布局容器?_Objective C_Cocoa - Fatal编程技术网

Objective c 在Cocoa中使用表作为布局容器?

Objective c 在Cocoa中使用表作为布局容器?,objective-c,cocoa,Objective C,Cocoa,首先,;我目前受雇于webdeveloper,因此有几件事在我脑海中挥之不去,其中之一是:不要将表格用于布局,只是不要 我还在学习Objective-C,并使用一本书使用Cocoa框架。这里有一段引语: “您可以结合使用这两种方法将表转换为任意数据列表视图。现在,每一行都可以是任意大小的,并且可以使用任意单元格绘制。这样,您就可以在表视图中绘制完全不相关的内容,并将其用作布局容器。” 那样做感觉很不对。。。但是,这在使用Cocoa开发OSX时很常见,还是应该避免这种情况?在“不使用表格进行布局”

首先,;我目前受雇于webdeveloper,因此有几件事在我脑海中挥之不去,其中之一是:不要将表格用于布局,只是不要

我还在学习Objective-C,并使用一本书使用Cocoa框架。这里有一段引语: “您可以结合使用这两种方法将表转换为任意数据列表视图。现在,每一行都可以是任意大小的,并且可以使用任意单元格绘制。这样,您就可以在表视图中绘制完全不相关的内容,并将其用作布局容器。”

那样做感觉很不对。。。但是,这在使用Cocoa开发OSX时很常见,还是应该避免这种情况?

在“不使用表格进行布局”背后的动机是强制实现表示(CSS)和内容(HTML)的分离。这是一种标记语言

在Cocoa中,范例是模型-视图-控制器。你想让你的模型(内容)独立于你的视图(展示…等等),但事实上并不相同

如果你说的是iOS,那么以这种方式使用UITableView是完全合乎犹太教义的。这是因为它的工作是管理一个“单元”表,它可以由任何东西组成。没有人会假装它是为了一个你可能在书中找到的信息表。UITableView中的“表”实际上与HTML中的“表”概念不同;例如,UITableView甚至不能像HTML表那样支持列

如果您谈论的是Mac OS X,那么NSTableView在概念上更接近HTML表。大多数情况下,它用于数据,但例如,它可以用于生成复选框网格。(但如果这正是您想要做的,那么NSMatrix可能更适合您。)

请注意,使用HTML表格进行布局的最糟糕的缺点是涉及大量跨多个列和行的单元格和/或在表格中嵌入表格,这些技术在NSTableView或UITableView中甚至没有类似的功能。您无法使用NSTableView来实现此类布局

因此:

  • 不要沉迷于名称中用于布局的单词“table”。这不是一件坏事,可可实际上设计得很好,你只需要适应这个领域

  • 一定要坚持将内容/模型与演示/视图分开的精神。一开始很难看到,因为所有内容都是Objective-C(而不是HTML和CSS这两种独立的语言)


你的目标平台是什么:Mac OS X还是iOS?我猜是iOS,因为到处都在使用UITableView进行布局(例如,苹果自己的设置应用程序)。同样的道理也适用于Mac OS X,不过在大多数情况下,使用NSTableView来布局视图可能有点过头了。@ben是的,我以为OP想要OS X,但在重新阅读问题后,我不确定。如果是OS X,则有两种替代方案可供选择
NSTableView
。目标平台是OS X。什么替代方案?这是一个很好的答案,但我认为它有点忽略了这一点,在cocoa中,所有视图都有框架,它们代表了它们在superview中的位置。大多数布局都是通过在框架中显式放置视图来完成的。对于HTML表来说,更不寻常的情况是矩阵。很好,我添加了一个关于NSMatrix的注释。如果你认为有更好的方法来抓住要点,请给出另一个答案。有足够的空间。