I spend fair amount of time on OSX, so one of my biggest gripes about Forms was lack of support for a native Mac client. On Windows I can target UWP and run projects directly on Windows 10. But, on OSX I have to launch either the iOS or Android target. Not a deal breaker, but certainly cumbersome.
MvvmCross promises to be a Xamarin.Forms-like MVVM framework that targets more platforms. But, it seems OSX clients are languishing as a low-priority concern for that project.
Working Client
The xamarin blog's instructions mostly worked. I added a Cocoa app with the latest version of Xamarin.Forms on nuget (2.5.0) to my Forms solution, and made the required changes.
Everything built, but when I launched it I got a System.NullReferenceException:
1: Xamarin.Forms.Platform.MacOS.FormsApplicationDelegate.UpdateMainMenu() in
2: Xamarin.Forms.Platform.MacOS.FormsApplicationDelegate.DidFinishLaunching(Foundation.NSNotification notification) in
3: mobile_app.OSX.AppDelegate.DidFinishLaunching(Foundation.NSNotification notification) in /Users/jake/jade/jade/mobile_app/mobile_app.OSX/AppDelegate.cs:33
4: AppKit.NSApplication.NSApplicationMain() in
5: AppKit.NSApplication.Main(string[] args) in /Users/builder/data/lanes/5489/c4240f3f/source/xamarin-macios/src/AppKit/NSApplication.cs:100
6: mobile_app.OSX.MainClass.Main(string[] args) in /Users/jake/jade/jade/mobile_app/mobile_app.OSX/Main.cs:12
I found the solution in the xamarin forums. Need to change the initialization of NSApplication in Main.cs:
1: static void Main(string[] args)
2: {
3: NSApplication.Init();
4: NSApplication.SharedApplication.Delegate = new AppDelegate();
5: NSApplication.SharedApplication.MainMenu = new NSMenu(); // FIX
6: NSApplication.Main(args);
7: }
Line 5 is the added line.Giving me a working- albeit embarrassingly trivial- app: