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

时间:2012-11-12 22:28:10

标签: macos cocoa customization cocoa-sheet

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

custom sheet with usernames

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

-(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

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

1 个答案:

答案 0 :(得分:2)

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