我正在尝试创建今日应用扩展程序。我想有一个UIViewController用于将所有数据加载到app并在此UIViewController for Today Extension和App中使用相同的变量。
例如:我有针对TodayAppExtension的UILabel和app,我想连接Label文本,如:
my_label.text =“你好”
两个UILabels ......我试过公开课,就像这样做:
这是两个视图控制器的类别
导入UIKit
public class AppDataViewController:UIViewController {
@IBOutlet public var pacificLabel: UILabel! override public func viewDidLoad() { super.viewDidLoad() } override public func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } public func updateClocks() { var time: NSDate = NSDate() println("Time: \(time)") var timeString : NSString = "Time: \(time)" let formatter:NSDateFormatter = NSDateFormatter(); var timeZone = NSTimeZone(name: "UTC") formatter.timeZone = timeZone formatter.dateFormat = "HH:mm:ss" println("UTC Time: \(formatter.stringFromDate(time))") timeZone = NSTimeZone(name: "US/Pacific") formatter.timeZone = timeZone formatter.dateFormat = "HH:mm:ss" println("PST Time: \(formatter.stringFromDate(time))") self.pacificLabel.text = formatter.stringFromDate(time) }
}
如何从App中的StoryBoard和Extension中的StoryBoard访问此self.pacificLabel.text? 总是当我试图从ViewController调用函数updateClock()时,我得到了这个:
致命错误:在解包可选值时意外发现nil
答案 0 :(得分:0)
你从未创造过pacificLabel。
在你的
中override public func viewDidLoad() {
super.viewDidLoad()
}
您需要创建一个UILabel对象。
您获得的错误是因为您在使用它时将其声明为可选项。所以你不需要打开它。因此,它预计pacificLabel会存在,而在你解开它时它并没有。
在viewDidLoad中创建UILabel对象,它将起作用。
如果问题是您的故事板中存在此标签,则需要控制 - 将该对象从视图类(故事板中的视图)拖动到脚本以创建对该对象的引用。