Moin,
ich bastle aktuell an meiner ersten kleinen OS X-App mit Swift. Ich nutze Xcode 6.4 und bin relativ neu.
Momentan habe ich 3 Klassen:
Spoiler anzeigen
Alles anzeigen
Alles anzeigen
Alles anzeigen
Ich sah hier keinen Swift-Syntaxhighlighter, daher mal JavaScript, das hebt dann noch paar Schlüsselwörter hervor.
Natürlich habe ich noch eine entsprechende
Mein Problem ist jetzt folgendes:
Ich habe in den Einstellungen des Projekts unter General>Deployment info folgendes:
CapturFiles_6.png
Also kein Main Interface. Ich würde nun erwarten, dass Swift dann
Das ist sehr komisch, nutze ja nirgends 'nen NSColorPickerGridView o. ä. Habe das gegooglet und gefunden, dass das ein Bug ist, den man lösen kann, indem man eine .nib-Datei anlegt, allerdings habe ich ja eine .xib und soweit ich weiß, wird daraus beim Kompilieren ja eine, oder?
Wenn ich eine .xib-Datei bei Main Interface angebe, dann zeigt er das entsprechende Window darin an, jedoch führt er auch dann in der
Über entsprechende Hilfestellungen würde ich mich freuen!
Grüße
ich bastle aktuell an meiner ersten kleinen OS X-App mit Swift. Ich nutze Xcode 6.4 und bin relativ neu.
Momentan habe ich 3 Klassen:
JavaScript-Quellcode: STTweetWindow.swift
- import Cocoa
- import CoreLocation
- class STTweetWindow: NSWindow, NSWindowDelegate {
- var locationManager: CLLocationManager!
- var geoCoder: CLGeocoder!
- func initialize() {
- self.titleVisibility = NSWindowTitleVisibility.Hidden;
- self.locationManager = CLLocationManager();
- self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
- self.locationManager.distanceFilter = 10;
- self.geoCoder = CLGeocoder();
- }
- func windowWillShow() {
- if !self.visible {
- let systemAppearanceName = (NSUserDefaults.standardUserDefaults().stringForKey("AppleInterfaceStyle") ?? "Light").lowercaseString;
- let systemAppearance = systemAppearanceName == "dark" ? NSAppearance(named: NSAppearanceNameVibrantDark) : NSAppearance(named: NSAppearanceNameVibrantLight);
- self.appearance = systemAppearance;
- self.locationManager.startUpdatingLocation();
- }
- }
- func windowWillClose() {
- self.locationManager.stopUpdatingLocation();
- }
- // Mehr kommt noch.
- }
JavaScript-Quellcode: AppDelegate.swift
- import Cocoa
- @NSApplicationMain
- class AppDelegate: NSObject, NSApplicationDelegate {
- var tweetWindowController:STTweetWindowController!
- func applicationDidFinishLaunching(aNotification: NSNotification) {
- // Insert code here to initialize your application
- tweetWindowController = STTweetWindowController();
- showTweetWindow(); // Beispiel, nur mal zum ersten Test
- }
- func applicationWillTerminate(aNotification: NSNotification) {
- // Insert code here to tear down your application
- }
- func showTweetWindow() {
- NSApp.activateIgnoringOtherApps(true);
- tweetWindowController.showWindow(nil);
- }
- }
JavaScript-Quellcode: STTweetWindowController.swift
- import Cocoa
- class STTweetWindowController: NSWindowController {
- var tweetWindow: STTweetWindow { return self.window as! STTweetWindow }
- override func windowDidLoad() {
- super.windowDidLoad()
- self.tweetWindow.initialize();
- // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
- }
- }
Ich sah hier keinen Swift-Syntaxhighlighter, daher mal JavaScript, das hebt dann noch paar Schlüsselwörter hervor.
Natürlich habe ich noch eine entsprechende
STTweetWindow.xib
, in der sich ein einfaches Window befindet.Mein Problem ist jetzt folgendes:
Ich habe in den Einstellungen des Projekts unter General>Deployment info folgendes:
CapturFiles_6.png
Also kein Main Interface. Ich würde nun erwarten, dass Swift dann
@NSApplicationMain
entsprechend erkennt und dann die AppDelegate verwendet. Der Buildvorgang ist erfolgreich, nur kommt dann kein Window und auch der Haltepunkt hatte nicht ausgelöst im applicationDidFinishLaunching
. Stattdessen fliegt mir das um die Ohren:Das ist sehr komisch, nutze ja nirgends 'nen NSColorPickerGridView o. ä. Habe das gegooglet und gefunden, dass das ein Bug ist, den man lösen kann, indem man eine .nib-Datei anlegt, allerdings habe ich ja eine .xib und soweit ich weiß, wird daraus beim Kompilieren ja eine, oder?
Wenn ich eine .xib-Datei bei Main Interface angebe, dann zeigt er das entsprechende Window darin an, jedoch führt er auch dann in der
AppDelegate
nichts aus.. Interessant wäre vielleicht noch mein erster Schritt, bei dem ich glaube, dass dieser der Ursprung des Problems sein könnte: Ich habe die MainMenu.xib gelöscht und dann meine eigene eben hinzugefügt. Habe ich damit vielleicht mein Projekt zerschossen? Verstehe ich vielleicht etwas falsch?Über entsprechende Hilfestellungen würde ich mich freuen!
Grüße