Разработка под Mac OS X. Уведомление приложения в Dock

Если вашему приложению понадобится как-то известить пользователя о новых сообщениях, лучший способ показать индикатор в Dock:
Разработка под Mac OS X. Уведомление приложения в Dock

Делается это очень просто.Если вашему приложению понадобится как-то известить пользователя о новых сообщениях, лучший способ показать индикатор в Dock:
Разработка под Mac OS X. Уведомление приложения в Dock

Делается это очень просто.

Создадим проект, назовём его Badge. Затем добавим новый контроллер – CZBadgeWindowController и привязываем его к вьюшки. Как всё это сделать, я писал подробно в прошлой статье. Рекомендую прочитать.

Окей, теперь заходим в MainMenu.xib, делаем вьюшку:
Разработка под Mac OS X. Уведомление приложения в Dock

Наводим на первое текстовое поле, зажимаем ctrl и перетягиваем в окно файла – CZBadgeWindowController.hhttp://coderszone.info/dev/1883-create-simple-app-for-macosx.html я подробно рассказывал как это сделать), в названии переменной пишем – title

Затем, перетягиваем с кнопки – Сохранить, название экшена – saveTitle:
Разработка под Mac OS X. Уведомление приложения в Dock

Для кнопки – Очистить, делаем также, в качестве названия экшена пишем – clearTitle

Теперь переходим к самому интересному и простому – коду.

Файл описания класса выглядит так:

//
//  CZBadgeWindowController.h
//  Badge
//
//  Created by Дамир Фаттахов on 10.04.12.
//  Copyright (c) 2012 Coders Zone. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface CZBadgeWindowController : NSWindowController

@property (assign) IBOutlet NSTextField *title;

- (IBAction)saveTitle:(id)sender;
- (IBAction)clearTitle:(id)sender;

@end

Реализация класса:

//
//  CZBadgeWindowController.m
//  Badge
//
//  Created by Дамир Фаттахов on 10.04.12.
//  Copyright (c) 2012 Coders Zone. All rights reserved.
//

#import "CZBadgeWindowController.h"

@implementation CZBadgeWindowController
@synthesize title;

- (id)initWithWindow:(NSWindow *)window
{
    self = [super initWithWindow:window];
    if (self) {
        // Initialization code here.
    }
    
    return self;
}

- (void)windowDidLoad
{
    [super windowDidLoad];
    
    // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}



- (IBAction)saveTitle:(id)sender {
    NSDockTile *badge = [[NSApplication sharedApplication] dockTile];
    [badge setBadgeLabel: [title stringValue]];
}

- (IBAction)clearTitle:(id)sender {
    NSDockTile *badge = [[NSApplication sharedApplication] dockTile];
    [badge setBadgeLabel:@""];
}
@end

Установка значения производится методом setBadgeLabel, в качестве значения можно указать текст или число:
Разработка под Mac OS X. Уведомление приложения в Dock

Дополнительно

  1. Описание класса NSDockTile
  2. Метод позволяющий отрисовывать на иконке приложения

Исходные коды приложения «Badge» – [attachment=42]
Также исходные коды доступны на githubhttps://github.com/williamadama/Badge

Я на Google+