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

Gui*_*iks 3 cocoa objective-c

首先; 我目前被用作web开发人员,所以我脑子里有一些东西被烧掉了,其中之一就是:不要使用表格进行布局,只是不要!

我也在学习Objective-C并使用Cocoa框架.以下是它的引用:"你可以结合使用这两种方法将表格转换为任意数据列表视图.每行现在可以是任意大小,并使用任何单元格绘制.这使您可以在表格视图中绘制完全不相关的内容并将其用作布局容器."

它摸上去很舒适SO错做到这一点......但是,这是常见的与可可OSX发展的,或者我应该避免这种情况?

ben*_*ado 9

"不使用表格进行布局"背后的动机是强制表示(CSS)和内容(HTML)的分离.那是标记语言的事情.

在Cocoa中,范例是模型 - 视图 - 控制器.您希望保持模型(内容)独立于您的视图(演示文稿...... sorta),但它并不完全相同.

如果你在谈论iOS,那么以这种方式使用UITableView就完全是犹太洁食.那是因为它的工作是管理一个可以由任何东西组成的"单元格"表.没有任何借口可以像你在书中找到的信息表一样.UITableView中的"表"与HTML中的"表"实际上并不相同; 例如,UITableView甚至不能像HTML表那样支持列.

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

请注意,使用HTML表格进行布局的最严重违规行为涉及大量跨越多个列和行的单元格和/或在表格内嵌入表格,这些技术在NSTableView或UITableView中甚至没有类似物.您无法使用NSTableView来实现这些类型的布局.

所以:

  • 不要在用于布局的名称中注意"table"这个词.这不是一件坏事,Cocoa实际上设计得很好,你只需要适应这个领域.

  • 请坚持将内容/模型与展示/视图分开的精神.一开始很难看,因为一切都在Objective-C中(而不是HTML和CSS这两种不同的语言).