Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 显示菜单和菜单项_Objective C_Cocoa - Fatal编程技术网

Objective c 显示菜单和菜单项

Objective c 显示菜单和菜单项,objective-c,cocoa,Objective C,Cocoa,我有NSTableView对象。我需要在任何时间点在我的控制下调用与其关联的菜单。通过它,我应该调用menuedsupdate方法来更新菜单 class MyClass { IBOutlet NSTableView *tableView; IBOutlet NSMenu *mMenu; } //methods void menuNeedsUpdate:(NSMenu*)inMenu { // do menu settings here } void myMethod:(

我有
NSTableView
对象。我需要在任何时间点在我的控制下调用与其关联的菜单。通过它,我应该调用
menuedsupdate
方法来更新菜单

class MyClass
{
  IBOutlet NSTableView *tableView;
  IBOutlet NSMenu *mMenu;
}

//methods 

void menuNeedsUpdate:(NSMenu*)inMenu
{
   // do menu settings here

}

 void myMethod:(id)inTableView
{

  NSInteger row = [inTableView selectedRow];

  //some condition checking here

  // invoke menu of the tableView

}

我更喜欢子类化NSTableView并实现
-(NSMenu*)menuForEvent:(NSEvent*)theEvent

一个典型的方法是

- (NSMenu *)menuForEvent:(NSEvent *)theEvent {
    NSPoint where = [self convertPoint:[theEvent locationInWindow] fromView:nil];
    NSInteger row = [self rowAtPoint:where];
}

你的问题是…?似乎你没有正确阅读我的问题…这里没有问题。连问号都没有。您在问什么?是,这将返回相应tableview的菜单。如何告知显示菜单。您可以实现+(NSMenu*)defaultMenu,然后在menuForEvent内调用[[self class]defaultMenu]修改它(禁用项目或添加其他项目);