// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import Cocoa /** `ViewControllers` in the xib can inherit from this class to communicate with the flutter view for this application. ViewControllers that inherit from this class should be displayed as a popover or modal, with a button that binds to the IBAction `pop()`. To get the value of the popover during close, pass a callback function as the `dispose` parameter. The callback passed will have access to the `PlatformViewController` and all of it's properties at close so that the `count` can be passed back through the message channel if needed. */ class PlatformViewController: NSViewController { var count: Int = 0 var dispose: ((PlatformViewController)->())? @IBOutlet weak var label: NSTextField! var labelText: String { get { return "Button tapped \(self.count) time\(self.count != 1 ? "s" : "")." } } override func viewDidLoad() { super.viewDidLoad() self.label.stringValue = labelText } public required init?(coder aDecoder: NSCoder) { self.count = 0 self.dispose = nil super.init(coder: aDecoder) } init(withCount count: Int, onClose dispose: ((PlatformViewController)->())?) { self.count = count self.dispose = dispose super.init(nibName: nil, bundle: nil) } @IBAction func pop(_ sender: Any) { self.dispose?(self) dismiss(self) } @IBAction func increment(_ sender: Any) { self.count += 1 self.label.stringValue = labelText } }