首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSMenuItem目标和操作

NSMenuItem目标和操作
EN

Stack Overflow用户
提问于 2011-11-28 04:03:12
回答 1查看 5.7K关注 0票数 1

我希望得到关于将函数绑定到NSMenuItem的帮助。

我有一个object Tab数组,我想为每个Tab对象绘制一个NSMenuItem。我成功地绘制并添加了选项卡,但我希望当用户单击项目时,它会调用相关NSMenuItem对象的实例方法(void)play。我已经尝试了下面的代码,但它似乎不起作用,因为菜单项保持灰色。

代码语言:javascript
复制
-(void)buildInterface: (NSMutableArray *) tabArray ;
{
   for (Tab *currentTab in tabArray)
   {
      NSMenuItem *item = [[NSMenuItem alloc] init];
      [item setTitle:@"test"];
      [item setTarget:currentTab];
      [item setAction: @selector(play:)];

      [statusMenu insertItem:item atIndex:1]; 
   } 
}

这是Tab.h

代码语言:javascript
复制
#import <Foundation/Foundation.h>
#import "Safari.h"
#import "GoogleChrome.h"

    @interface Tab : NSObject{

        NSString *plistKey; //key pour le dico de la plist
        NSString *navigateur; //type du navigateur
        NSString *titreTab; //titre de la page Web concernée (hors transmission information)
        NSString *idSite; //nom en toute lettre et mis en forme du site
        NSString *URL;  //URL de l'onglet
        NSInteger *tempsChanson; //durée de la chanson courante en seconde 
        NSInteger *tempsPlayed; //temps déjà joué en secondes
        NSInteger *tabIndex; //index de l'onglet
        SafariTab *tabObjectSafari; //objet de l'onglet concerné, safari
        SafariWindow *tabWindowSafari; //fenêtre de l'onglet conderné, safari
        SafariApplication *applicationSafari;
        GoogleChromeTab *tabObjectChrome;
        GoogleChromeWindow *tabWindowChrome;
        GoogleChromeApplication *applicationChrome;

    }
@property(readwrite, copy) NSString *titreTab;
@property(readwrite, copy) NSString *plistKey;
@property(readwrite, copy) NSString *idSite;
@property(readwrite, copy) NSString *URL;
@property(readwrite, copy) NSString *navigateur;
@property(readwrite, retain) SafariTab *tabObjectSafari;
@property(readwrite, retain) SafariWindow *tabWindowSafari;
@property(readwrite, retain) SafariApplication *applicationSafari;
@property(readwrite, retain) GoogleChromeTab *tabObjectChrome;
@property(readwrite, retain) GoogleChromeWindow *tabWindowChrome;
@property(readwrite, retain) GoogleChromeApplication *applicationChrome;

//initialisation d'un onglet Safari
-(id)initwithSafari: (SafariWindow *) passedWindow tab: (SafariTab *)passedTab application:(SafariApplication *)safariApplication dictionnaryKey:(NSString *) plistKey;

//TODO initialisation d'un onglet avec Google Chrome
-(id)initwithChrome: (GoogleChromeWindow *) passedWindow tab: (GoogleChromeTab *)passedTab application:(GoogleChromeApplication *)chromeApplication dictionnaryKey:(NSString *) plistKey;

-(void)play;
+(NSArray *)isControlabe: (SafariTab *) passedTab;

@end

这是一张图片的链接,显示了调用函数http://imageshack.us/photo/my-images/3/capturedcran20111127205.png/后的结果(对不起,我没有足够的声誉)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-28 04:06:41

您正在使用需要-(void)play:(id)sender;函数的[item setAction: @selector(play:)];。您应该删除选择器中的冒号,以便可以使用函数-(void)play;

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8288608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档