0

我有:

MyWindowController.h
MyWindowController.m
HistoryController.h
HistoryController.m

在 MyWindowController.h 中,有:

IBOutlet NSPanel* viewInvoice;

后来:

- (IBAction)viewInvoice:(NSNumber *)invoiceNumber;

我想在整个程序中使用这个面板。在我的 HistoryController.m 中,有:

- (IBAction)viewSelectedInvoice:(id)sender{
  id viewInvoiceObject = [[MyWindowController alloc] init];
  [viewInvoiceObject viewInvoice:[NSNumber numberWithInt:1]];
  [viewInvoiceObject release];
}

现在我可以成功访问该方法(一些 NSLog 调用验证了这一点),但我根本无法真正让 NSPanel 出现。这是那里的一些代码:

- (IBAction)viewInvoice:(NSNumber *)invoiceNumber {
  [viewSelectedInvoicePanel makeKeyAndOrderFront:viewSelectedInvoicePanel];
}

如果我将我的历史视图中的按钮链接到 FirstResponder 操作“viewInvoice”,我可以弹出面板,但是我似乎无法通过参数(即发票号)发送。

4

1 回答 1

0

编辑您的 HistoryController 以将您的自定义NSPanel设置为属性:

@property (nonatomic, retain) IBOutlet NSPanel *viewInvoice;

IBAction然后,在您上创建一个HistoryController来调用您的自定义NSPanel函数:

-(IBAction)viewInvoice:(id)sender {
  [self.viewInvoice viewInvoice:self.some_property_with_invoice_number];
}

并将您的按钮链接到viewInvoice方法(在HistoryController类内部。此外,您应该将属性对象类型从更改NSPanel为您为类命名的任何内容。

于 2012-06-16T23:17:04.997 回答