まず、コードを投稿することはできませんが、問題をできる限り説明するように努めます。
OK。カスタムSwiftビューファイルを作成し、view.xib
それview.swift
をロードしましたXib
。XIBは簡単ですlabel
以上imageview
。ファイルIBOutlet
に自分を作成してview.swift
、画像を切り替えたり、ラベルを変更したりできます。view.swift
単に拡張しUIView
ます。
だから今、私はこのビューをStoryboard
コントローラーを持っている私のに統合しました(それを呼びましょうotherVC.swift
)。今otherVC.swift
、view.swift
触れられている情報を取得したいと考えています。設定してみましたIBAction
が、設定するオプションがなく、オンだけIBOutlet
です。いくつかのグーグルの後、私はクラスUiControl
がを設定するためのそれらのメカニズムを持っていることに気づきましたIBAction
。
だから私view.swift
はもう拡張しませんがUIView
、今はUIControl
。その後IBAction
、タッチイベントでを作成できました。(タッチダウンや内側のタッチなど)シミュレーターのビューでアプリを実行すると、ビューをクリックできますが、IBActionは呼び出されません。
したがって、私の質問はIBAction
、他のVCで自分のビューにを設定する方法、またはIBActions
特定のビューに独自のビューを作成する方法です。
再び..コードを投稿できません。実用的な例を含むスニペットまたはリンクを歓迎します
ありがとう!
カスタムを作成するのは難しいと思いますがIBAction
(不可能ではないにしても)、問題には委任、通知、クロージャなどの他の多くの解決策があります。私の意見では最も簡単な方法であるため、クロージャを使用することをお勧めします。
以下は、クロージャを使用してこれを実現する方法のサンプルコードです。
class View: UIView {
var someButtonTapped: (UIButton) -> Void = { _ in }
@IBAction private func someButtonTappedAction(_ sender: UIButton) {
someButtonTapped(sender)
}
}
次に、コントローラーに次を追加します。
objectOfYourCustomView.someButtonTapped = { (sender: UIButton) in
// Handle action
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加