Montag, Februar 23, 2015

Mono Mac / Xamarin Mac Notizen

Erste Schritte zu einfacher App:

Wann kann man auf die gebundenen Outlets zugreifen?

  • Ab AwakeFromNib()

Wie beendet man das Programm beim Schließen des Fensters? Es gibt mindestens 3 Varianten:

  1. Im WindowController - per Event (in Initialize()):
    this.Window.WillClose += () => NSApplication.SharedApplication.Terminate(this);
  2. Im WindowController - per "Delegate" in Initialize:
    this.Window.Delegate = new MyWindowDelegate();

    dann MyWindowsDelegate:
    class MyWindowDelegate : NSWindowDelegate
    {
           public override void WillClose(NSNotification notification)
           {        // close app
                  NSApplication.SharedApplication.Terminate(notification);
           }
    }
  3. Im AppDelegate ApplicationShouldTerminateAfterLastWindowClosed überschreiben:
    public override bool ApplicationShouldTerminateAfterLastWindowClosed
        (NSApplication sender)
     {
                return true;
     }
Wie greift man auf Settings zu?
  1. Schreibend:
    NSUserDefaults.StandardUserDefaults.SetBool(true, "LastFileNameOK");
    NSUserDefaults.StandardUserDefaults.Synchronize ();
  2. Lesend:
    bool val = NSUserDefaults.StandardUserDefaults.BoolForKey("LastFileNameOK");
  3. Defaults setzen (ungetestet, sollte so gehen)
    var dict = new NSMutableDictionary ();
    dict ["UserName"] = (NSString)"User"; NSUserDefaults.StandardUserDefaults.RegisterDefaults (dict);
Wie reagiert man auf die Standard-Menü-Einträge?
  • z.B. im AppDelegate entsprechende Methoden positionieren, Action-Namen entsprechend dem, was in XCode bzw. der API-Doc steht, z.B. für Neu:
    [Action ("newDocument:")]
    public void NewDocument (MonoMac.Foundation.NSObject sender)
    {
                // call mainWindowController and tell him to do something new
    }
So geht's weiter:

Keine Kommentare: