Два окна представлены, когда я начинаю свой проект только XIB - PullRequest
0 голосов
/ 09 октября 2019

Я использую Xcode 10.1 два создания простого приложения одного окна. Проблема в том, что при запуске я вижу два окна, а не одно, которое я ожидаю. Вот мой код

// AppDelegate

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    var mainWindowController: WindowController!

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        // Insert code here to initialize your application
        print("loading")
        let mainWindowController = WindowController()
        mainWindowController.showWindow(self)
        self.mainWindowController = mainWindowController


    }

    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
         print("closed")
    }


}

// WindowController.swift

import Cocoa

    class WindowController: NSWindowController, NSSpeechSynthesizerDelegate {

        @IBOutlet weak var textField: NSTextField!
        @IBOutlet weak var speakButton: NSButton!
        @IBOutlet weak var stopButton: NSButton!

        override var windowNibName: String {
          return "Window"
        }


        let speechSynth = NSSpeechSynthesizer()

        var isStarted: Bool = false {
            didSet {
               updateButtons()

            }
        }

        override func windowDidLoad() {
            super.windowDidLoad()
           viewDidLoad()
        }

         func viewDidLoad() {
           // super.viewDidLoad()
            updateButtons()
            speechSynth.delegate = self
            print("view load")


            // Do any additional setup after loading the view.
        }



        @IBAction func speakIt(sender: NSButton) {
            let string = textField.stringValue
            if string.isEmpty {
                print("String is empty")
            }
            else {
                print(string)
                speechSynth.startSpeaking(string)
                isStarted = true
            }
        }

        @IBAction func stopIt(sender: NSButton) {
            speechSynth.stopSpeaking()
            isStarted = false
        }

        func updateButtons() {
            if isStarted {
                speakButton.isEnabled = false
                stopButton.isEnabled = true
            } else {
                stopButton.isEnabled = false
                speakButton.isEnabled = true
            }
        }

        func speechSynthesizer(_ sender: NSSpeechSynthesizer, didFinishSpeaking finishedSpeaking: Bool) {
            isStarted = false
        }
    }

Мой Xib имеет опцию «Видимо при запуске». Если я сниму флажок, я не вижу окна.

По сути, я пытаюсь запустить программу из книги "Программирование какао для OSX". Однако книга устарела. Но я пытаюсь найти свой путь через новые Xcode и Swift. Любая помощь?

Также стоит отметить, что функционирует только одно окно, второе окно IBOutlets и IBAction не связаны. Так что во втором окне ничего не происходит.

Я не могу понять, почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...