11

プログラムでボタンを作成する方法から?

self は迅速な遊び場では機能しません:

button.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)

エラー :

プレイグラウンドの実行に失敗しました: エラー: :42:13: エラー: 未解決の識別子 'self' の使用

また、コンパイルされるボタンアクションメソッドを含むクラスを作成しようとしましたが、ボタンをクリックしてもコンソールに何も出力されません

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, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)

view.addSubview(b)

view
4

3 に答える 3

8

残念ながら、プレイグラウンドのコントロールはインタラクティブではありません。

先日NSWindow、Mac プレイグラウンド用の を作成して表示することで、プレイグラウンド コントロールの非対話性を回避しようとしましたが、その結果、ウィンドウがプレイグラウンドの背後で点滅するだけでした。

NSProcessNSBundleNSApplicationおよびシステム アクティビティ モニターを調べた後、プレイグラウンドが実際にコードをコンパイルし、それをスタブ アプリにロードして実行し、プレイグラウンドが結果をキャプチャして表示し、スタブ アプリが終了するか待機します。次の実行のために。これは、結果が表示されるまでに、コードが実行されていないことを意味します。

興味がある場合は、プレイグラウンドで以下のコードを試して、私の意味を確認してください。Activity Monitor を開いてフィルターを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, 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)

ここに画像の説明を入力

アップデート

Swift プレイグラウンドで半機能の OS X ウィンドウを取得し、コードをgithub repoに配置することができました。インタラクティブな UIKit ベースのビューがまだ可能かどうかはわかりません。

于 2014-06-08T20:27:25.060 に答える