2

我有三个文件:

  1. SummaryView.xib -> 包含我的视图的轮廓
  2. SummaryView.swift -> 上面视图的控制器,为子视图定义了出口(例如这个问题中讨论的按钮)
  3. TodayViewController.swift ->“今天”小部件的控制器

我正在使用以下代码在 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 Widget 的控制器中定义了一个额外的目标:

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