【问题标题】:Trying to get an NSPanel from one class to be viewed in a different class?试图从一个类中获取一个 NSPanel 以在不同的类中查看?
【发布时间】:2012-06-16 19:29:27
【问题描述】:

我有:

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

【问题讨论】:

    标签: objective-c xcode methods nspanel


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多