用于创建报告的Cocoa IB元素

时间:2012-01-13 21:00:45

标签: xcode cocoa interface-builder nsoutlineview

我正在开发一个应用程序来显示活动和活动中的内容。我是Cocoa的新手,但已经创建了一个基本界面来显示Activities数组的内容,然后响应一个按钮来显示所有选定活动的Laps和一些摘要数据。以下是类结构:

活动类:

  • activityDate
  • 运动
  • 圈[]

Lap Class:

  • 开始时间
  • TOTALTIME
  • 距离
  • maximumSpeed
  • averageSpeed
  • maximumPace
  • averagePace
  • 卡路里
  • averageHeartbeat
  • maximumHeartbeat
  • 强度

我真正想要做的是显示一个报告视图,其中显示每个选定的活动及其详细信息和摘要以及底部的摘要,我可以打印。

Running  Oct-22-2011 10:10:14 AM
              Lap 1  10:10:14 AM  3.80 mi  42:48   11:16/mi  ...
                          Summary 3.80 mi  42:48   11:16/mi  ...

Running  Oct-24-2011 04:07:06 PM
         Lap 1  04:07:06 PM  3.10 mi  31:19   10:06/mi  ...
         Lap 2  04:38:31 PM  3.10 mi  31:16   10:05/mi  ...
                    Summary  6.20 mi  1:02:36 10:05/mi ....

              Grand Summary  10.0 mi  1:45:25 10:29/mi  ...

摘要是总计和平均值,具体取决于值。我想要列标题和可能的行突出显示摘要。

我看过可能使用NSOutlineView,因为我希望所有内容都能很好地在列中对齐,但不知道如何使用两个不同的类来显示。我试过用HTML创建一个NSTextView,结果不错。但是,我真的不想生成HTML来解决这个问题。

任何想法和可能的例子?

1 个答案:

答案 0 :(得分:0)

经过研究,我找不到在IB中实现我想要的界面的方法。我回过头来使用WebView和HTML来生成报告结果。使用表格和CSS,我能够创建一组相当令人愉快的报告,可以轻松打印。

这是生成的HTML,因为我无法发布图像(我对stackoverflow来说太新了)。

    <table class='first'>
        <tr class='activity'><td>Running</td><td colspan='10' align='left'>Oct 2, 2011 11:29 AM</td></tr>
        <tr class='lap'><th></th><th>Start Time</th><th>Distance</th><th>Elapsed Time</th><th>Avg Pace</th><th>Max Pace</th><th>Avg Speed</th><th>Max Speed</th><th>Calories</th><th>Avg Heartrate</th><th>Max Heartrate</th></tr>
        <tr class='lapdetails'><td></td><td class='lap'>11:29:53 AM</td><td class='lap'>3.68 mi</td><td class='lap'>38:21.62</td><td class='lap'>10:25/mi</td><td class='lap'>5:43/mi</td><td class='lap'>5.8 mph</td><td class='lap'>10.5 mph</td><td class='lap'>449</td><td class='lap'>0</td><td class='lap'>0</td></tr>
        <tr class='activitysummary'><td>Totals:</td><td class='lap'></td><td class='lap'>3.68 mi</td><td class='lap'>38:21.62</td><td class='lap'>10:25/mi</td><td class='lap'>5:43/mi</td><td class='lap'>5.8 mph</td><td class='lap'>10.5 mph</td><td class='lap'>449</td><td class='lap'>0</td><td class='lap'>0</td></tr>
    </table>
    <table>
        <tr class='activity'><td>Running</td><td colspan='10' align='left'>Oct 7, 2011 12:22 PM</td></tr>
        <tr class='lap'><th></th><th>Start Time</th><th>Distance</th><th>Elapsed Time</th><th>Avg Pace</th><th>Max Pace</th><th>Avg Speed</th><th>Max Speed</th><th>Calories</th><th>Avg Heartrate</th><th>Max Heartrate</th></tr>
        <tr class='lapdetails'><td></td><td class='lap'>12:22:59 PM</td><td class='lap'>3.18 mi</td><td class='lap'>31:17.35</td><td class='lap'>9:49/mi</td><td class='lap'>6:44/mi</td><td class='lap'>6.1 mph</td><td class='lap'>8.9 mph</td><td class='lap'>402</td><td class='lap'>148</td><td class='lap'>171</td></tr>
        <tr class='activitysummary'><td>Totals:</td><td class='lap'></td><td class='lap'>3.18 mi</td><td class='lap'>31:17.35</td><td class='lap'>9:49/mi</td><td class='lap'>6:44/mi</td><td class='lap'>6.1 mph</td><td class='lap'>8.9 mph</td><td class='lap'>402</td><td class='lap'>148</td><td class='lap'>171</td></tr>
    </table>
    <table>
        <tr class='activity'><td colspan='11'>Summary</td></tr>
        <tr class='lap'><th></th><th>Activities</th><th>Distance</th><th>Elapsed Time</th><th>Avg Pace</th><th>Max Pace</th><th>Avg Speed</th><th>Max Speed</th><th>Calories</th><th>Avg Heartrate</th><th>Max Heartrate</th></tr>
        <tr class='activitysummary'><td class='lap'></td><td class='lap'>2</td><td class='lap'>6.86 mi</td><td class='lap'>1:09:38.97</td><td class='lap'>10:07/mi</td><td class='lap'>5:43/mi</td><td class='lap'>5.9 mph</td><td class='lap'>10.5 mph</td><td class='lap'>851</td><td class='lap'>148</td><td class='lap'>171</td></tr>
        <tr class='activitysummary'><td class='lap'></td><td class='lap'>per Activity</td><td class='lap'>3.43 mi</td><td class='lap'>34:49.49</td><td class='lap'>10:07/mi</td><td class='lap'>&nbsp;</td><td class='lap'>5.9 mph</td><td class='lap'>&nbsp;</td><td class='lap'>425</td><td class='lap'>&nbsp;</td><td class='lap'>&nbsp;</td></tr>
    </table>