在我的一个控制器中,我想在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;
}
还有其他我可以检查的信息以显示模态表吗?
最佳答案
您的ABSAdvancedPreferencesViewController
init
方法缺少将超级结果分配给self的方法。另外,为什么不按预期分配/初始化工作表控制器?
self.unsyncableWindowController = [[ABSUnsyncableWindowController alloc] initWithWindowNibName:@"XIBNAME"];
那应该分配窗口控制器,并且您应该能够访问其窗口进行显示。
关于objective-c - 在10.9上打开工作表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21512183/