试图从一个类中获取NSPanel以在不同的类中查看?

时间:2012-06-16 19:29:28

标签: objective-c xcode methods nspanel

我有:

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”,我可以弹出面板,但似乎我无法通过参数发送(即发票编号) )。

1 个答案:

答案 0 :(得分: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更改为您命名为类的任何内容。