我创建了一个使用beginSheet方法从顶部向下滑动的窗口,在窗口上是一些NSTextFields,用户可以在其中输入数据,然后当用户按下ok按钮提供完成处理程序NSModalResponsOK时,我怎样才能获得NSWindow Sheet操作中NSTextField的值到调用beginSheet方法的视图。我创建了一个initMethod,它将当前View控制器对象传递给NSWindow工作表模式,以便我可以尝试设置父视图控制器数据属性。我可以在完成处理程序块中显示数据,但无法从完成处理程序块中获取值。
这是显示工作表的操作
- (IBAction)addJobDescription:(id)sender {
NSLog(@"fired add job desc");
self.addJobDescriptionViewController = [[AddJobDescriptionViewController alloc]initWithWindowNibName:@"AddJobDescriptionViewController" andWithViewController:self];
[[[self view] window] beginSheet:self.addJobDescriptionViewController.window completionHandler:^(NSModalResponse returnCode){
NSLog(@"%ld",(long)returnCode);
if (returnCode == 1) {
[self setJobDescriptionTableDataWithNumber:self.jobDescriptionNumberArray andWithDescription:self.jobDescriptionArray andTotal:self.JobDescriptionTotalArray];
NSLog(@" first job description: %@",self.jobDescriptionArray[0]);
}
}];
}
以下是具有工作表视图和NSTextFields的NSwindow实例的解除操作
- (IBAction)endSheetView:(id)sender {
self.nEstimateViewController.jobDescriptionArray = [[NSArray alloc]initWithObjects:self.jobDescriptionOne.stringValue,self.jobDescriptionTwo.stringValue,self.jobDescriptionThree.stringValue,self.jobDescriptionFour.stringValue, nil];
self.nEstimateViewController.JobDescriptionTotalArray = [[NSArray alloc]initWithObjects:self.descriptionTotalOne.stringValue,self.descriptionTotalTwo.stringValue,self.descriptionTotalThree.stringValue,self.descriptionTotalFour.stringValue, nil];
self.nEstimateViewController.jobDescriptionNumberArray = [[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"4", nil];
[self.window.sheetParent endSheet:self.window returnCode:NSModalResponseOK];
}
我试图制作一个从完成块调用但没有骰子的方法。我想从NSWindow Sheet视图中的NSTextFields获取数据,以添加到数组以更新NSTableView。我疯狂尝试一切,但我还没有找到解决方案。我想我需要__block在哪里或让父视图控制器成为NSWindow工作表实例的委托。
如果您需要任何其他信息或代码,请告知我并感谢先进