Изменение заголовков таблицы на Mac - PullRequest
10 голосов
/ 21 января 2011

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

Зак

Ответы [ 2 ]

40 голосов
/ 21 января 2011

Чтобы изменить способ отображения заголовков таблицы, необходимо создать подкласс 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
0 голосов
/ 18 апреля 2016

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

NSString *title = @"Your Title";
NSTableColumn *yourColumn = self.tableView.tableColumns.lastObject;
        [yourColumn.headerCell setStringValue:title];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...