Swift&Objective-CiOS 开发

iOS之插件开发

2016-08-25  本文已影响86人  Jack__yang

插件的简介

插件的开发步骤

插件

模板分析

- (id)initWithBundle:(NSBundle *)plugin
{
    if (self = [super init]) {
        // reference to plugin's bundle, for resource access
        // 应用插件的资源包,用于资源访问
        // 在NSObject_Extension中初始化的时候设置
        self.bundle = plugin;
        // 发送Xcode程序启动的通知
        // 调用didApplicationFinishLaunchingNotification方法
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(didApplicationFinishLaunchingNotification:)
                                                     name:NSApplicationDidFinishLaunchingNotification
                                                   object:nil];
    }
    return self;
}
/**
 *  当Xcode启动的时候调用
 *
 */
- (void)didApplicationFinishLaunchingNotification:(NSNotification*)noti
{
    // 接收到通知后移除通知
    [[NSNotificationCenter defaultCenter] removeObserver:self name:NSApplicationDidFinishLaunchingNotification object:nil];
    
    // 获取到Edit菜单
    NSMenuItem *menuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"];
    if (menuItem) {
        // 添加一条分割线
        [[menuItem submenu] addItem:[NSMenuItem separatorItem]];
        // 创建一个菜单项目
        // 设置菜单项目的点击事件
        NSMenuItem *actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Do Action" action:@selector(doMenuAction:) keyEquivalent:@""];
        // 将事件交给当前类处理
        [actionMenuItem setTarget:self];
        // 添加子标题
        [[menuItem submenu] addItem:actionMenuItem];
    }
}
// 弹出弹框
- (void)doMenuAction:(NSMenuItem *)item
{
    
    NSLog(@"=====%@   item = %@",item.keyEquivalent,item);
    NSAlert *alert = [[NSAlert alloc] init];
    [alert setMessageText:[NSString stringWithFormat:@"Hello, World%@",item.keyEquivalent]];
    [alert runModal];
}

需求

需求分析

实现步骤

上一篇 下一篇

猜你喜欢

热点阅读