在我的一个控制器中,我想在10.9上打开一个模态表。
这是第一个控制器的实现代码:
#import "ABSAdvancedPreferencesViewController.h"
#import "ABSUnsyncableWindowController.h"
@interface ABSAdvancedPreferencesViewController ()
@property (strong, nonatomic) ABSUnsyncableWindowController *unsyncableWindowController;
@end
@implementation ABSAdvancedPreferencesViewController
- (id)init {
return [super initWithNibName:@"ABSAdvancedPreferencesViewController" bundle:nil];
}
- (IBAction)showUnsyncableSheet:(id)sender {
if (self.unsyncableWindowController == nil) {
self.unsyncableWindowController = [ABSUnsyncableWindowController new];
}
[self.view.window beginSheet:[self.unsyncableWindowController window] completionHandler:^(NSModalResponse returnCode) {
CLS_LOG(@"Table dismissed");
}];
}
当我执行链接的IBAction
时,没有任何反应。应该显示模态的NSWindowController
子类具有XIB,启动时可见已取消激活且window
已经是插座。
调试我在这里看到window
参数是nil
,大概是因为我在前一个控制器中调用了new
:
@implementation ABSUnsyncableWindowController
- (id)initWithWindow:(NSWindow *)window {
self = [super initWithWindow:window];
if (self) {
// Initialization code here.
}
return self;
}
我还可以查看其他内容以显示模态表吗?
答案 0 :(得分:1)
您的ABSAdvancedPreferencesViewController
init
方法缺少将超级结果分配给自己。另外,为什么不按预期分配/初始化纸张控制器?
self.unsyncableWindowController = [[ABSUnsyncableWindowController alloc] initWithWindowNibName:@"XIBNAME"];
那应该分配窗口控制器,你应该能够访问它的窗口进行显示。