Управление NSPopover не отвечает

Установка выглядит следующим образом:

  • Приложение Menubar с одним контроллером просмотра. Представление из контроллера представления хранится в NSMenuItem
  • Этот контроллер представления имеет одну кнопку, которую мы назовем "кнопкой настроек"
  • Когда вы нажимаете кнопку "Настройки", открывается NSPopover.
  • NSPopover имеет свой контент установлен в SettingsViewController
  • SettingsViewController имеет одну кнопку.

Кнопка в SettingsViewController не анимируется при нажатии. Он не отвечает ни на какие действия пользователя. Я не имею в виду, что "действие" запущено, я имею в виду, что нет физической реакции. Как будто кнопка отключена, хотя я ее не отключил.

AppDelegate.swift:

class AppDelegate: NSObject, NSApplicationDelegate {


    let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(NSSquareStatusItemLength)
    let direktMain = DirektMainViewController(nibName:"DirektMainViewController", bundle:nil)

    let mainItem = NSMenuItem()
    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
        statusItem.button!.title = "Dkt"
        statusItem.menu = NSMenu()


        mainItem.view = direktMain!.view;
        statusItem.menu!.addItem(mainItem)
    }
}

SettingsViewController.swift:

class SettingsViewController: NSViewController {

    @IBOutlet weak var quittButton: NSButton?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do view setup here.
        print("SettingsViewController. ViewDidLoad")
    }

    @IBAction func quitAction(sender: AnyObject) {
        print("Time to quit!")   
    }        
}

DirektMainViewController.swift:

class DirektMainViewController: NSViewController {

    @IBOutlet weak var settingsButton: NSButton?

    let popoverSettings = NSPopover()
    let settingsViewController = SettingsViewController(nibName:"SettingsViewController", bundle:nil)

    @IBAction func settingsButtonAct(sender: AnyObject) {
        print("Hey: ", __FUNCTION__)
        if !popoverSettings.shown {
            popoverSettings.showRelativeToRect(settingsButton!.bounds, ofView: settingsButton!, preferredEdge: NSRectEdge.MinY)
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do view setup here.
        print("DirektMainViewController viewDidLoad")
        popoverSettings.contentViewController = settingsViewController
    }
}

Свифт Проблема

0 ответов

Другие вопросы по тегам