我的主窗口上有一个按钮,可以打开另一个窗口来收集一些用户输入。如果用户完成输入,则窗口应该关闭。如果用户单击红色按钮,我需要显示警报并关闭窗口。在任何一种情况下,我都需要能够重新打开输入窗口。
我可以第一次打开窗口,但不能以编程方式关闭它,也不能重新打开它。我已经阅读了所有可以找到的帖子,并且找不到我可以申请的帖子。我认为我的问题是一个问题,而代表。
窗口的代表是Calibrate。
Calibrate.h
#import <Cocoa/Cocoa.h>
#import <Foundation/Foundation.h>
.
.
@interface Calibrate : NSWindowController
.
.
@end
Calibrate.m
#import "Calibrate.h"
Calibrate *calibrate;
- (IBAction)showCalibratePanel:(id)sender
{
[calibrate showWindow:self];
}
- (void)handleMaxAngleChange:(NSNotification *)notification
{
///// last step in info gathering
NSString *s = [[notification userInfo]objectForKey:@"myMaxAngleKey"];
gotResponse = NO;
[calibrate close]; //////////// does not close.
}
#import "Calibrate.h"
@interface Calibrate ()
@end
@implementation Calibrate
.
.
- (id)init
{
self = [super initWithWindowNibName:@"Calibrate"];
return self;
}
- (void)windowDidLoad
{
[super windowDidLoad];
}
-(BOOL)windowShouldClose:(NSNotification *)note
{ //// fires when red button clicked but alert not shown.
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:@"Incomplete calibration may cause ERC to not work correctly."];
[alert beginSheetModalForWindow:[NSApplication sharedApplication].mainWindow
modalDelegate:nil
didEndSelector:nil
contextInfo:nil];
return YES;
}
答案 0 :(得分:0)
使用
[calibre.window close];
要显示窗口使用:
[calibrate showWindow:self];
和你一样。