web-dev-qa-db-ja.com

Xcode 8の既存の機能にボタンアクションをドラッグできない

Xcode 8に奇妙な問題があります。Ctrlキーを押しながらボタンを既存の機能にドラッグしようとすると、新しいアウトレットまたはアクションしか作成できません。さらに奇妙なのは、Ctrl +ドラッグでアクションを作成しても、アクションの作成に使用したのと同じボタンにイベントを接続できないことです。アクションとボタンの間に接続がないようにIBアイコンも空白ですが、リアルタイムのクリックはアクションを実行します。一方、アクションをボタンにSwift=からストーリーボードに接続しようとすると(@IBアイコンは "full"になります)ですが、認識されないセレクターmyActionWithSenderをクリックするとリアルタイムで例外が発生します- enter image description hereenter image description here

19

私のXcodeバージョンでは、IBActionは「AnyObject」の代わりに「Any」パラメーターで自動的に作成されます。代わりに、UIButtonを使用してIBActionを明示的に作成するとうまくいきました。

22
Umut Uygar

私の場合、AnyをUIButtonに変更する必要があります。 UIButtonからのアクションを特定する必要があります。

@IBAction func buttonClicked(_ sender: UIButton) {

}
11
Didats Triadi

UIButtonをクリックし、[ユーティリティ]エリアから[接続インスペクター]に移動します。

イベントの横にある空の円をクリックして、ラインをfunc bodyにドラッグします。

2
Alaa Qaddoumi

タッチアップを選択して開いたボタン機能で右クリックし、.. uをドラッグしてこれを試してください。

1
ronak patel

.Swiftファイルの変更:

@IBAction func buttonClicked(sender: UIButton) { // Do something }

@IBAction func buttonClicked(z sender: UIButton) { // Do something }

その小さな 'z'(または本当に必要なラベル)を追加するだけです。アンダースコア「_」を試してみましたが、それでも同様に機能しますが、警告が表示されるため、代わりに「z」を使用して警告を回避しました。

Xcode 8のバグだと思います。どこか(IB)でSwift 3の最初のパラメーターにラベルが必要なコードに準拠している必要があります。間違って)それがラベルだから、ラベル(私の場合は 'z')を追加すると、みんなが幸せになる。

Swift 2.3はラベルを必要としません。 Swift 3はそうです。したがって、Jaroslawが2.3から3.0へのアップグレードでもこの問題を回避できると指摘しました。騙す。

0
briggsm

Swift 3)でも、@IBActionの引数を(_ sender: Any)から(_ sender: UIButton)または(_ sender: AnyObject)に変更したいが、手動で変更したい.

うまくいくかもしれません。

0
Lin

送信者をAnyからAnyObjectに変更するとうまくいきます

0
Thanh Luu

私の場合、同様のストーリーボードを開いていました。一度閉じてから-ボタンを1回クリックして、周囲のブロックを確認します。 -次に、右クリックしてViewControllerにドラッグします。 -最後に、ViewController内でイベントのコードブロックを配置する場所をクリック/タップします。

0
Hem