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します。HistoryControllerNSPanel

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

そして、ボタンをviewInvoiceメソッドにリンクします(HistoryControllerクラス内。また、プロパティオブジェクトのタイプをNSPanel、クラスに名前を付けたものに変更する必要があります。

于 2012-06-16T23:17:04.997 に答える