2

私は3つのファイルを持っています:

  1. SummaryView.xib -> ビューのアウトラインを含む
  2. SummaryView.swift -> サブビュー用に定義されたアウトレットを持つ上記のビューのコントローラー (この質問で説明されているボタンなど)
  3. TodayViewController.swift -> 「Today」ウィジェットのコントローラー

次のコードを使用して、TodayViewController 内に SummaryView.xib をロードしています。

var summaryView: SummaryView!
summaryView = UINib(nibName: "SummaryView", bundle: NSBundle.mainBundle()).instantiateWithOwner(SummaryView.self, options: nil)[0] as! SummaryView

xib には、コントローラの SummaryView.swift で定義されたアウトレットを持つボタンが含まれています。

@IBOutlet weak var openAppButton: UIButton!    
@IBAction func openAppButtonClicked(sender: AnyObject) {
    let url = NSURL(string: "MyApp://")
    sender.extensionContext!!.openURL(url!, completionHandler: nil)
}

残念ながら、この関数はボタンのクリック時に呼び出されることはありません。その後、Today ウィジェットのコントローラーで追加のターゲットを定義しました。

summaryView.openAppButton.userInteractionEnabled = true
summaryView.openAppButton.addTarget(self, action:#selector(TodayViewController.openApp(_:)), forControlEvents: UIControlEvents.TouchUpInside)

メソッドと一緒に

func openApp(sender: AnyObject) {
    let url = NSURL(string: "MyApp://")
    sender.extensionContext!!.openURL(url!, completionHandler: nil)
}

ただし、このメソッドも呼び出されません。

ただし、コンソールに次のエントリが表示されるため、クリックすると何かがトリガーされます。

2016-09-21 14:51:45.667049 My App Widget[7546:1001683] subsystem: com.apple.UIKit, category: GestureEnvironment, enable_level: 0, persist_level: 0, default_ttl: 1, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0
2016-09-21 14:51:45.667669 My App Widget[7546:1001683] subsystem: com.apple.UIKit, category: GestureExclusion, enable_level: 0, persist_level: 0, default_ttl: 1, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0

私は何が欠けていますか?

乾杯

4

0 に答える 0