Изменение заголовков таблиц на Mac

Мне удалось найти руководства по изменению заголовков таблиц в iOS с помощью UITableView, но havent смог найти любую информацию для разработки Mac. Кто-нибудь знает какие-либо хорошие ресурсы/шаги для изменения внешнего вида таблиц?

Зак

Ответ 1

Чтобы изменить представление заголовков таблиц, вам необходимо подклассифицировать NSTableHeaderCell, выполнить собственный собственный чертеж в одном из своих методов рисования, а затем заменить ячейки заголовка каждого столбца экземпляром вашего подкласса.

Вы также можете обнаружить, что вам нужно подклассифицировать NSTableHeaderView для рисования любого пространства, где нет ячеек заголовка, и заменить cornerView на представление таблицы.

Это должно помочь вам:

for (NSTableColumn *column in [tableView tableColumns]) {
   [column setHeaderCell:
      [[[MyHeaderCell alloc]
                      initTextCell:[[column headerCell] stringValue]]
                      autorelease]];
}

И она является отправной точкой для подкласса NSTableHeaderCell:

@interface MyHeaderCell : NSTableHeaderCell
{
}
- (void)drawWithFrame:(CGRect)cellFrame
          highlighted:(BOOL)isHighlighted
               inView:(NSView *)view;
@end

@implementation MyHeaderCell

- (void)drawWithFrame:(CGRect)cellFrame
          highlighted:(BOOL)isHighlighted
               inView:(NSView *)view
{
   CGRect fillRect, borderRect;
   CGRectDivide(cellFrame, &borderRect, &fillRect, 1.0, CGRectMaxYEdge);

   NSGradient *gradient = [[NSGradient alloc]
      initWithStartingColor:[NSColor whiteColor]
                endingColor:[NSColor colorWithDeviceWhite:0.9 alpha:1.0]];
   [gradient drawInRect:fillRect angle:90.0];
   [gradient release];

   if (isHighlighted) {
      [[NSColor colorWithDeviceWhite:0.0 alpha:0.1] set];
      NSRectFillUsingOperation(fillRect, NSCompositeSourceOver);
   }

   [[NSColor colorWithDeviceWhite:0.8 alpha:1.0] set];
   NSRectFill(borderRect);

   [self drawInteriorWithFrame:CGRectInset(fillRect, 0.0, 1.0) inView:view];
}

- (void)drawWithFrame:(CGRect)cellFrame inView:(NSView *)view
{
   [self drawWithFrame:cellFrame highlighted:NO inView:view];
}

- (void)highlight:(BOOL)isHighlighted
        withFrame:(NSRect)cellFrame
           inView:(NSView *)view
{
   [self drawWithFrame:cellFrame highlighted:isHighlighted inView:view];
}

@end

Ответ 2

Код для изменения заголовка столбца в таблицеView:

NSString *title = @"Your Title";
NSTableColumn *yourColumn = self.tableView.tableColumns.lastObject;
        [yourColumn.headerCell setStringValue:title];