【问题标题】:Adding a ViewController to application without a storyboard在没有情节提要的情况下将 ViewController 添加到应用程序
【发布时间】:2016-12-13 09:50:01
【问题描述】:

如何在没有情节提要的空项目中实现 viewDidLoad() 之类的函数?

对不起,初学者的问题。我一直在寻找几个小时,但它仍然不起作用。 感谢您的帮助!

编辑:
我使用的是 .xib 文件,只是没有 .storyboard。目前我正在 applicationDidFinishLaunching() 中设置所有内容

edit2:
我想我终于明白了:
我创建了一个没有故事板的新项目,创建了一个文件 ViewController.swift 和一个 ViewController.xib 并添加了

window?.contentViewController = ViewController()

进入 AppDelegate 内的 applicationDidFinishLaunching 函数。 我不敢相信我没有早点得到这个。 很抱歉 BaseZen 浪费了您的时间,非常感谢您尝试帮助我!

【问题讨论】:

标签: swift macos cocoa viewcontroller


【解决方案1】:

这个问题(远)太宽泛了。请使其更具体,也许为这里回答的部分量身定制,只是为了将来的其他人。

所有 Storyboard 技术都有代码内等效项。你的谷歌技术是:

MacOS Swift 如何以编程方式doXyz

顺便说一句,iOS 在搜索结果方面的流行度可能要高出 10 倍。因此,如果平台无关紧要,而您只想学习如何在代码中实现,那么请从 iOS 开始。

这将使您开始布局:https://www.hackingwithswift.com/read/6/3/auto-layout-in-code-addconstraints

例如,初始化一个非 IBOutlet:

var myButton = NSButton()

设置其文本:

myButton.title = "Hello"

将其添加到视图控制器的视图中:

view.addSubview(myButton)

在视图中约束它:

// You have to learn some verbose weird stuff to do this in code
myButton.translatesAutoresizingMaskIntoConstraints = false
view.addConstraint(NSLayoutConstraint( ... ))

将其连接到非 IBAction 处理程序,假设您有一个名为 func handleAction(sender: AnyObject) 的函数

myButton.target = self
myButton.action = #selector(MyViewController.handleAction(_:))

最简单的例子:

import Cocoa

class ViewController: NSViewController {
    var b = NSButton()

    override func viewDidLoad() {
        super.viewDidLoad()
        b.title = "Hi! I am a button"
        b.target = self
        b.frame = NSRect(x: 100, y: 100, width: 100, height: 25)
        b.action = #selector(ViewController.handleButtonPress(_:))
        view.addSubview(b)
    }

    func handleButtonPress(sender: NSButton) {
        b.title = "Thank you for clicking."
        b.sizeToFit()
    }
}

【讨论】:

  • 感谢您的回复。对不起,我没有说清楚。我使用的是 .xib,只是没有 .storyboard。目前我正在 applicationDidFinishLaunching() 中设置所有内容
  • 抱歉回复晚了,感谢您的宝贵时间!我想要一个如何在没有情节提要的情况下创建的空 macOS 应用程序中实现视图控制器的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多