从
How to create a button programmatically?
自我不能在快速的操场上工作:
button.addTarget(self,action: "buttonAction:",forControlEvents: UIControlEvents.TouchUpInside)
错误:
Playground execution Failed: error: :42:13: error: use of
unresolved identifier ‘self’
我也尝试创建一个类ButtonAction方法里面编译,但当我点击按钮没有打印在控制台
import UIKit class myself { func buttonAction(sender:UIButton!) { println("Button tapped") } } var s = myself() // Create View var f = CGRect(x:0,y:0,width:200,height:200) var view = UIView(frame:f) // Create Button var b = UIButton(frame: f) b.setTitle("Hello",forState: UIControlState.Normal) b.addTarget(s,forControlEvents: UIControlEvents.TouchUpInside) view.addSubview(b) view
不幸的是,操场上的控制不是互动的.
原文链接:https://www.f2er.com/swift/318817.html通过创建和显示一个Mac操作系统的NSWindow,我试图绕过操场控制的非交互性,但结果是窗户在操场后面闪烁.
最好的我可以在探索NSProcess,NSBundle,NSApplication并观看系统活动监视器后,告诉我们,操场实际上编译你的代码,将其加载到存根应用程序中,执行,操场捕获结果并显示它们,然后存根应用程序退出或等待下一次执行.这意味着当您看到结果时,代码不再执行.
如果您好奇,可以在操场上尝试下面的代码,看看我的意思.如果您打开活动监视器并在PlaygroundStub_OSX上过滤,则可以看到运行代码启动的过程.它通常处于“不响应”状态.我还包括对代码探测部分结果的屏幕截图.
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,width: 100,height: 20)) textField.stringValue = "Test" view.addSubview(textField) var button = NSButton(frame: NSRect(x: 30,y: 60,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
我能够在Swift操场上获得半功能的OS X窗口,并将代码放在一个github repo中.我不知道是否可以使用基于UIKit的交互视图.