Macos 如何在OSX中从自定义工作表获取信息

Macos 如何在OSX中从自定义工作表获取信息,macos,cocoa,customization,cocoa-sheet,Macos,Cocoa,Customization,Cocoa Sheet,我已经创建了一个自定义工作表,其中包含一个表。该表中有用户名列表: 我想获取选定的行值并在应用程序中使用它。我可以通过以下方式获取行: -(void)tableViewSelectionDidChange:(NSNotification *)notification{ NSInteger selectedRow = [[notification object] selectedRow]; if(selectedRow != -1){ self.selectedR

我已经创建了一个自定义工作表,其中包含一个表。该表中有用户名列表:

我想获取选定的行值并在应用程序中使用它。我可以通过以下方式获取行:

-(void)tableViewSelectionDidChange:(NSNotification *)notification{
    NSInteger selectedRow = [[notification object] selectedRow];
    if(selectedRow != -1){
        self.selectedRowDict = [self.usersArray objectAtIndex:selectedRow];
    }
}
但现在我的问题是,我想把数据传递回启动此工作表的主窗口

以下是相同的代码:

if(!self.accountSheet){
    [NSBundle loadNibNamed:@"AccountSheet" owner:self];
}
[NSApp beginSheet:self.accountSheet
   modalForWindow:[mainWindowView window]
    modalDelegate:self
   didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
      contextInfo:NULL];
如何做到这一点

请注意:工作表是在与主窗口笔尖分开的笔尖中创建的。每个nib都有自己的NSObject扩展类来实现操作和其他与窗口相关的工作。 工作表nib作为文件所有者与主窗口相关,并且在主nib NSObject类中有一个IBOutlet


如果需要更多信息,请告诉我。

让您的工作表将信息存储在一个实例变量中,就像您正在做的那样,然后在
didEndSelector
中,只需从工作表中获取值:
self.accountSheet.selectedRowDict
,或者你做了什么。

我试过,但编译器说在对象类型NSWindow上找不到selectedRowDict。让我明白。。。这是有意义的,因为该变量在单独的NSObject类中声明,该类与表委托和工作表关联。我在问题中补充了一些信息。。无法使用NSWindow子类而不是NSWindow的类型帮助解决IssuedClare accountSheet。这应该能让编译器满意。我还是不明白你的方法。。很抱歉请详细说明“使用NSWindow子类而不是NSWindow的类型声明accountSheet”的含义。因为我有一个nib for sheet和一个扩展NSObjectI的对象类是错误的——我认为您的tableview委托是一个窗口子类。哪个类实现了
-tableViewSelectionDidChange
?这是扩展NSObject的控制器类吗?是的。。。代码如下-@interface Account\u Sheet:NSObject