当前位置: 首页 > 面试题库 >

使用Swift的没有Storyboard或Xib文件的OSX应用程序

凤扬
2023-03-14
问题内容

不幸的是,我在Internet上找不到任何有用的东西-
我想知道,在不使用Swift中的故事板或XIB文件的情况下,初始化应用程序实际上必须输入什么代码。我知道我必须有一个.swift名为的文件main。但是我不知道在那写什么(比如我需要autoreleasepool之类的东西?)。例如,我要NSMenu如何初始化和如何将a添加NSViewController到活动窗口(iOS的类似方法.rootViewController无济于事)。谢谢你的帮助
;)

编辑:实际上我不想@NSApplicationMain在前面使用AppDelegate。我宁愿知道那里到底发生了什么,然后自己做。


问题答案:

如果您不想拥有@NSApplicationMain属性,请执行以下操作:

  1. 有一个文件main.swift
  2. 添加以下顶级代码:
        import Cocoa

    let delegate = AppDelegate() //alloc main app's delegate class
    NSApplication.sharedApplication().delegate = delegate //set as app's delegate

    // Old versions:
    // NSApplicationMain(C_ARGC, C_ARGV)
    NSApplicationMain(Process.argc, Process.unsafeArgv);  //start of run loop

其余的应该在您的应用程序委托中。例如:

    import Cocoa

    class AppDelegate: NSObject, NSApplicationDelegate {
        var newWindow: NSWindow?
        var controller: ViewController?

        func applicationDidFinishLaunching(aNotification: NSNotification) {
            newWindow = NSWindow(contentRect: NSMakeRect(10, 10, 300, 300), styleMask: .resizable, backing: .buffered, defer: false)

            controller = ViewController()
            let content = newWindow!.contentView! as NSView
            let view = controller!.view
            content.addSubview(view)

            newWindow!.makeKeyAndOrderFront(nil)
        }
    }

然后你有一个viewController

    import Cocoa

    class ViewController : NSViewController {
        override func loadView() {
            let view = NSView(frame: NSMakeRect(0,0,100,100))
            view.wantsLayer = true
            view.layer?.borderWidth = 2
            view.layer?.borderColor = NSColor.red.cgColor
            self.view = view
        }
    }


 类似资料:
  • 问题内容: 我已经阅读了使用XCode故事板来实例化使用XIB进行设计的视图控制器,但是在Swift中使用XCode进行工作时遇到了麻烦(使用Xcode 6 Beta 6)。我想知道我做错了什么还是该功能不再可用? 我创建了一个简单的存储库https://github.com/jer-k/StoryboardTesting- Swift ,展示了上述方法。 我设法通过在init中添加和覆盖来解决此

  • 问题内容: 我正在这样做,我想使用CollectionView,但我还没有看到原型单元,也不知道在这种情况下如何使用CollectionView,有人可以帮助我吗? 我尝试以这种方式使用,但是比UICollectionView要花很多时间并且很难管理 问题答案: 使用UICollectionView的主要方法是通过编程方式管理逻辑。 首先,创建一个继承自的新类。选择是否要包含xib来轻松设计单元格

  • 问题内容: 我可以像下面这样以编程方式创建简单的自定义viewForHeaderInSection。但是我想做更多复杂的事情,例如与不同的类连接,并像tableView单元格一样达到其属性。简而言之,我想看看我在做什么。 有没有人可以解释如何使用xib创建自定义tableView标头视图?我遇到过旧的Obj-C主题,但是我是Swift语言的新手。如果有人详细解释,那太好了。 1.问题: 按钮@IB

  • 问题内容: 我有一个使用自定义方法连接到xib 的子类。 有没有办法可以在方法中初始化此单元格并仍然重用它?还是我必须使用重用标识符注册类本身? 问题答案: 惯用的NIB流程为: 使用重用标识符注册您的NIB。在Swift 3中 } 在Swift 2中: 定义您的自定义单元格类: class NameInput: UITableViewCell { } 在Interface Builder中创建一

  • 错误:for service无法启动服务service:OCI运行时创建失败:CONTAINER_Linux.GO:346:启动容器进程导致“exec:\”sh-c java-dspring.config.location=/application.properties-djava.security.egd=file:/dev/./urandom$java_opts-jar/app.jar\“:s

  • 问题内容: 我用的很快。我想在Storyboard的TabBar内部使用Navigation。首先,第一个显示出现在选项卡菜单的内部。但是,当我移至第二显示时,第二显示将显示,而没有选项卡菜单。 我选择了segue类型“ show(egPush)” 如何在所有视图上继续显示选项卡菜单? 问题答案: 在界面生成器中: 创建一个并将其设置为初始View Controller。 创建一个。 选择,然后转