繁体   English   中英

在应用程序中的Today扩展和ViewController之间公开类

[英]make public class between Today extension and ViewController in app

我正在尝试创建Today应用扩展。 我想要一个UIViewController来将所有数据加载到应用程序,并在该UIViewController中为Today Extension和App使用相同的变量。 例如:我有用于TodayAppExtension和app的UILabel,我想连接Label文本,例如:
my_label.text =“你好”
到两个UILabel ...我尝试使它成为公共类,例如:

这是两个视图控制器的类

导入UIKit

公共类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()时得到此信息:

致命错误:解开Optional值时意外发现nil

您从未创建过pacificLabel。

在你的

override public func viewDidLoad() {
    super.viewDidLoad()
}

您需要创建一个UILabel对象。

您收到的错误是因为您在使用它时将其声明为WILL存在的可选内容。 因此,您无需拆开包装。 因此,它希望pacificLabel存在,而在您“解开它”时并没有。

在viewDidLoad内部创建UILabel对象,它将起作用。

如果问题是情节提要中存在此标签,则需要控制该对象从视图类(情节提要中的视图)到脚本的拖拽,以创建对该对象的引用。

从视图类中拖动

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM