какао - Редактиране/Дизайн NSView визуално

Как мога визуално да проектирам NSView в Xcode? Опитвам се да създам приложение statusBar само със statusMenu

Персонализиран изглед на менюто

Както можете да видите по-горе, обектът се появява, но не мога да го редактирам визуално, след което става така като резултат:

Резултат, използващ само Storyboard

Опитах се да използвам XIB файл (имам само NSView, без ViewController), но не мога да поставя NSView в XIB в AppDelegate. Опитах други начини и успях да използвам XIB файла, но след това не мога да използвам Storyboard.

Имате ли идея за тази ситуация?

АКТУАЛИЗИРАНЕ

Благодаря на Макс за отговора на въпроса ми. Всъщност опитах това преди, но не успях. Опитах отново след вашия коментар и пак няма успех. Ето как направих Опитах

Създадох ViewController, след което променям изгледа му на MenuCustomView (NSView) Това е кодът в AppDelegate

    let statusBar = NSStatusBar.systemStatusBar().statusItemWithLength(-1)
var menuCustomView = NSView()

func applicationDidFinishLaunching(aNotification: NSNotification) {
    // Insert code here to initialize your application
    let statusIcon = NSImage(named: "statusIcon")
    let statusMenu = NSMenu()
    statusBar.image = statusIcon
    statusBar.menu = statusMenu

    let menuItem = NSMenuItem()
    menuItem.title = "title"
    var vc = ViewController()
    menuCustomView = vc.view
    menuItem.view = menuCustomView
    statusMenu.addItem(menuItem)

}

Файлове, които имам в проекта

Файлове, които имам


person BlueS    schedule 01.06.2015    source източник
comment
Ако имате само един изглед, защо ви е необходим разкадровката?   -  person mangerlahn    schedule 01.06.2015
comment
Може да имам други в по-нататъшното развитие, не искам да бъда ограничаван. И аз предпочитам Storyboard, чист е. Така че, ако има някакъв начин да използвате Storyboard като основен инструмент за проектиране на интерфейс, би било по-добре.   -  person BlueS    schedule 01.06.2015
comment
Добре, ще публикувам отговор   -  person mangerlahn    schedule 01.06.2015


Отговори (1)


Въпреки че не се нуждаете от контролера на изгледа, можете да го използвате, за да проектирате изгледите. Създайте такъв в сценария, редактирайте изгледа по желания от вас начин.

След това можете да използвате изгледа, като създадете viewController от сценария и използвате неговото свойство за изглед, за да прикачите изгледа към NSStatusBarItem

Моите думи в код:

    let storyboard = NSStoryboard(name: "Main", bundle: nil)
    let viewController = storyboard?.instantiateControllerWithIdentifier("MyViewController") as! NSViewController
    let view = viewController.view

Предполагам, че искате да добавите функциониращ код към изгледа. За да отговорите например на щракването на бутона, трябва да подкласирате NSViewController и след това да имплементирате кода, който бихте добавили към AppDelegate.

Ако имате нужда от още обяснения, не се колебайте да ми пишете :)

person mangerlahn    schedule 01.06.2015
comment
Актуализирах въпроса, след като опитах (отново) с вашата идея. Все още не работи. Моля, помогнете ми повече. Благодаря много - person BlueS; 01.06.2015
comment
Редактирах отговора си, надявам се, че мога да ви помогна! - person mangerlahn; 01.06.2015
comment
Проработи. Благодаря ти много, Макс! Единственото нещо, което остава е, че не разбирам защо мога просто да инстанцирам контролер, като направя нов екземпляр на if с let vc = ViewController()? - person BlueS; 01.06.2015
comment
Можете ли да отговорите на въпроса ми по-горе? Каква е разликата? - person BlueS; 01.06.2015
comment
Сигурен! Създаването на празен viewController с ViewController() няма да съдържа изгледа, който сте настроили в IB, защото няма връзка със създадения. За достъп до този изглед трябва да заредите viewController от сценария. - person mangerlahn; 01.06.2015
comment
Нека продължим тази дискусия в чата. - person BlueS; 01.06.2015