2016-08-07 4 views
1

Как вы реализуете такие функции, как viewDidLoad(), в пустом проекте без раскадровки?Добавление ViewController в приложение без раскадровки

Извините за новичок. Я уже много часов ищу, но он все еще не работает. Спасибо за любую помощь!

редактировать:
Я использую .xib файл, просто не .storyboard. На данный момент я устанавливаю все внутри applicationDidFinishLaunching()

edit2:
Я думаю, что я, наконец, получил его:
Я создал новый проект без раскадровки, создал файл ViewController.swift вместе с ViewController.xib и добавил

window?.contentViewController = ViewController() 

в функции applicationDidFinishLaunching внутри AppDelegate. Не могу поверить, что я не понял этого раньше. Извините BaseZen за потраченное время и большое спасибо за попытку помочь мне!

+0

Have вы читаете «SO»: http://stackoverflow.com/questions/28792722/osx-application-without-storyboard-or-xib-files-using-swift?rq = 1 – BaseZen

+0

Или вам нужна помощь при загрузке из NIB, потому что это должно быть легко найти, например: http://stackoverflow.com/questions/7814928/how-to-load-a-xib-file-in -a-uiview, но переведенный в Swift, например 'NSBundle.mainBundle(). LoadNibNamed (...)' все еще нуждается в большей ясности, на каком этапе у вас действительно возникают проблемы. – BaseZen

ответ

1

Вопрос (слишком) слишком широк. Пожалуйста, сделайте это более конкретным, возможно, подгоняя его к той части, на которую здесь отвечает, только ради других в будущем.

Имеются эквиваленты в коде для всех методов раскадровки. Ваша техника Google является:

MacOS Swift как doXyz программным

Кстати, IOS, вероятно, более популярным 10x с точки зрения результатов поиска. Поэтому, если платформа не имеет значения, и вы просто хотите узнать, как это сделать в коде, начните с iOS.

Это поможет вам начать работу с макета: https://www.hackingwithswift.com/read/6/3/auto-layout-in-code-addconstraints

Например, инициализация не-IBOutlet:

var myButton = NSButton() 

Установка его текст:

myButton.title = "Hello" 

Добавление его к View контроллера вид:

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() 
    } 
} 
+0

Спасибо за ваш ответ. Мне жаль, что я не поняла. Я использую .xib, просто нет .storyboard. На данный момент я настраиваю все внутри applicationDidFinishLaunching() – Domenic

+0

Извините за поздний ответ и спасибо за ваше время! Мне бы понравился пример того, как реализовать контроллер представления в пустом приложении macOS, созданном без раскадровки. – Domenic