Unfortunately, controls in playgrounds are not interactive.
I tried getting around the non-interactivity of playground controls the other day by creating and displaying an NSWindow
for a Mac playground, however, the result was that the window simply flashed behind the playground.
Best that I can tell after some probing into NSProcess
, NSBundle
, NSApplication
and watching the system Activity Monitor, the playground actually compiles your code, loads it into a stub app, executes, the playground captures the results and displays them then the stub app exits or waits around for the next execution. This means by the time you see the results, the code is no longer executing.
If you're curious, you can try the code below in a playground to see what I mean. If you open Activity Monitor and filter on PlaygroundStub_OSX
you can see the process that runs the code launch. It is oftentimes in a "Not responding" state. I've also included a screen capture of the results of the probing portion of the code.
import Cocoa
var app = NSApplication.sharedApplication()
app.hidden
var procInfo = NSProcessInfo.processInfo()
procInfo.processName
procInfo.arguments
var bundle = NSBundle.mainBundle()
bundle.bundlePath
var window = NSWindow(contentRect: NSRect(x: 30, y: 30, width: 400, height: 400), styleMask: NSTitledWindowMask, backing: .Buffered, defer: false)
var view = NSView(frame: NSRect(x: 0, y: 0, width: 300, height: 300))
var textField = NSTextField(frame: NSRect(x: 30, y: 30, width: 100, height: 20))
textField.stringValue = "Test"
view.addSubview(textField)
var button = NSButton(frame: NSRect(x: 30, y: 60, width: 100, height: 30))
button.highlight(true)
var buttonCell:NSButtonCell = button.cell() as NSButtonCell
buttonCell.bezelStyle = NSBezelStyle.RoundedBezelStyle
view.addSubview(button)
window.contentView.addSubview(view)
window.makeKeyAndOrderFront(nil)

UPDATE
I was able to get a semi-functional OS X window in a Swift playground and placed the code in a github repo. I'm not sure if an interactive UIKit based view is possible yet.