从NSWindow beginSheet完成处理程序

时间:2016-08-09 09:35:07

标签: objective-c macos cocoa

我创建了一个使用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工作表实例的委托。

如果您需要任何其他信息或代码,请告知我并感谢先进

0 个答案:

没有答案