[首先,请注意我没有使用Interface Builder]
当菜单项被点击时,我将NSWindow显示为模态表。这是显示它的代码:
let win = NSWindow(contentRect: NSRect(origin: NSZeroPoint, size: NSSize(width: 650, height: 400)), styleMask: NSResizableWindowMask, backing: .Nonretained, defer: false)
win.releasedWhenClosed = true
setupController = SetupSheetController(window: win)
mainWindow.beginSheet((setupController!.window)!) { (response: NSModalResponse) in
print("didClose")
self.setupController = nil
}
setupController
被定义为实例变量var setupController: SetupSheetController?
;并且SetupSheetController
是NSWindowController
子类。
当用户完成此工作表时,self.window?.sheetParent?.endSheet(self.window!, returnCode: NSModalResponseXXX)
会调用setupController
。
我的问题是模态NSWindow及其控制器都没有被释放。当我重新打开模态表时,它们也不会重复使用。 另请注意,我没有在此处显示的任何其他位置引用控制器。 想法?
答案 0 :(得分:0)
好的......事实证明我必须import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* A simple {@link Fragment} subclass.
*/
public class noVIP extends Fragment {
public noVIP() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_no_vi, container, false);
}
}
出窗口本身,尽管使用了一些间接:nil
(要写在win.windowController?.window = nil
的completionHandler中)。
但它对我来说并不是很优雅。还有其他办法吗?