NSWindowController指定的初始化难题

时间:2018-07-11 21:59:35

标签: swift macos cocoa

我正在尝试使此代码起作用:

class MyWindowController: NSWindowController
{
  let thing: Thing

  convenience init(thing: Thing)
  {
    self.thing = thing

    super.init(windowNibName: NSNib.Name(rawValue: "MyNib"))
  }
}

当然,问题在于,便利初始化程序无法从超类调用init。那么,如何初始化thing并仍然可以调用init(windowNibName:)(本身就是一个便捷的初始化程序)呢?我宁愿不必重新实现自己加载的笔尖,但是如果我只能使用指定的初始化程序,该如何避免呢?

1 个答案:

答案 0 :(得分:4)

根据Function SumCounts(sht As String, dest As String, addr As String, divi As String) Workbooks("MASTER").Sheets("XXX").Range(dest).Value = _ (Application.CountIf(Workbooks("BBB").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("CCC").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("DDD").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("EEE").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("FFF").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("GGG").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("HHH").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("III").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("JJJ").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("KKK").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("LLL").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("MMM").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("NNN").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("OOO").Worksheets(sht).Range(addr), ">0") + _ Application.CountIf(Workbooks("PPP").Worksheets(sht).Range(addr), ">0")) / _ Workbooks("MASTER").Sheets("XXX").Range(divi).Value End Function 文档:

  

您还可以实现一个typedef struct { int x1,y1,x2,y2; int (*division_mode_x)(int i,int x1,int x2,SpriteGrid grid); int (*division_mode_y)(int i,int y1,int y2); }SpriteGrid; 子类,以避免在实例化窗口控制器时要求客户端代码获取相应的笔尖文件名并将其传递给NSWindowControllerNSWindowController。最好的方法是重写init(windowNibName:)以返回笔尖的文件名,并通过将init(windowNibName:owner:)传递给windowNibName来实例化窗口控制器。使用init(window :)指定的初始值设定项可简化对Swift初始值设定项的要求。

您可以通过以下方式实现您的课程:

nil