2012-11-12 31 views
1

我已经创建了一个包含表格的自定义工作表。该表具有的用户名列表中它:如何从OSX中的自定义工作表获取信息

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]; 

如何做到这一点?

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

如果需要更多信息,请让我知道。

回答

2

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

+0

我试过这个,但是编译器说没有在对象类型NSWindow上找到selectedRowDict。对我来说,理解......这是有道理的,因为这个变量是在一个单独的NSObject类中声明的,该类与表代表和表单关联。我已经在问题中添加了更多信息.. t帮助解决问题 – Nik

+0

用NSWindow子类的类型声明accountSheet,而不是NSWindow。这应该满足编译器。 – paulmelnikow

+0

我仍然没有得到你的方法..对不起...你可以请详细说明'你的NSWindow子类的类型声明accountSheet,而不是NSWindow'。因为我有一个笔尖和一个NSObject扩展的对象类 – Nik

相关问题