</p>
概要
我想构建一个在日历中显示事件的自定义控件。
这是草稿:
这个概念
- 左下方的框可以垂直滚动。右下角的框可以双向滚动。
- 可以移动事件视图。如果在拖动视图期间它们接近边界,则视图会朝该方向自动滚动。
- 滚动区域根据数据库中最早和最新的事件或某个最大值是有限的。但是如果用户继续滚动滚动区域会相应地增长并且如果用户向后滚动并且没有创建新事件则折叠。
- 底部的“2011 年 7 月”按钮用作滚动条。如果用户将其拉出滚动区域的边界,它会相应地增长。
- 标题中的月份名称始终保持在此位置,直到下个月进入,所以它是一个长单元格,跨越月份的日期单元格,带有浮动标题。
- 标题行和列始终可见。
问题
因为我对 Cappuccino 或 Cocoa 的控件类的功能只是稍微熟悉:我在哪里可以直接使用 Cappuccino 或 Cocoa 类,在哪里子类化 Cappuccino/Cocoa 控件是合理的,我在哪里必须从头开始编写自定义控件?
编辑:我的想法
我认为它合理地用带有垂直分隔器的 SplitView 来划分控件。我可以在左侧子视图的左侧标题列中使用 TableView。我可以将垂直滚动与右侧发生的事情同步。
但我不太确定右侧的视图。我考虑过 TableView,但实际上我只需要将单元格作为背景网格。因此,我想,很难有两个标题行并实现所需的滚动行为。所以最好的方法可能是创建一个全新的自定义视图。但又是一个问题:将 Cappuccino 子类化在哪里是合理的。Cocoa 控件,我必须在哪里从头开始编写自定义控件?