在10.9打开一张表

时间:2014-02-02 15:13:53

标签: objective-c cocoa

在我的一个控制器中,我想在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;
}

我还可以查看其他内容以显示模态表吗?

1 个答案:

答案 0 :(得分:1)

您的ABSAdvancedPreferencesViewController init方法缺少将超级结果分配给自己。另外,为什么不按预期分配/初始化纸张控制器?

self.unsyncableWindowController = [[ABSUnsyncableWindowController alloc] initWithWindowNibName:@"XIBNAME"];

那应该分配窗口控制器,你应该能够访问它的窗口进行显示。