早上好!
我的 iOS 小部件出现“无法加载”问题。我已经阅读了很多关于“无法加载”消息的内容,但没有解决我的问题。我不确定,但我认为我的问题是在更改内容后刷新小部件。
我的小部件有一个按钮和一个标签。如果用户按下按钮,标签中的文本将更改 - 此时小部件显示“无法加载”。按下按钮后只需一毫秒。
import UIKit
import NotificationCenter
class TodayViewController: UIViewController, NCWidgetProviding {
@IBOutlet var segment_att: UISegmentedControl!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {
completionHandler(NCUpdateResult.NewData)
}
func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
return UIEdgeInsetsZero
}
@IBAction func button_ae(sender: AnyObject) {
let tableviewclass = TodayTableViewController()
tableviewclass.newData()
}
}
重要的是标签显示在 TableViewController 的 TableViewCell 中。所以 TableViewController 被嵌入在一个 Container 内的 ViewController 中……按钮的监听器调用 TableViewController 文件的 newdata() 方法。
import UIKit
import NotificationCenter
class TodayTableViewController: UITableViewController, NCWidgetProviding {
@IBOutlet var table: UITableView!
@IBOutlet var label1: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
init()
}
func init() {
let meldung: String = "test"
label1.text = meldung
}
func newData() {
let meldung: String = "new test"
label1.text = meldung
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
代码非常简单和基本 - 所以我想知道这个简单机制中的问题。我希望你能帮助我!
非常感谢!
您的代码假定在调用 newData()
时已设置 label1,即使在调用构造函数之后也是如此。
尝试使用这种 可选链 语法,如果属性为 nil,它将悄悄地失败:
import UIKit
import NotificationCenter
class TodayTableViewController: UITableViewController, NCWidgetProviding {
@IBOutlet var table: UITableView!
@IBOutlet var label1: UILabel!
var meldung: String = "test" // <-- meldung is property
override func viewDidLoad() {
super.viewDidLoad()
init()
}
func init() {
label1?.text = melding // <-- optional chaining
}
func newData() {
melding = "new test" // <-- set the class property
label1?.text = meldung // <-- optional chaining
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
您可以设置 meldung 属性,而不是调用 newData()
,例如:
tableviewclass.meldung = "new test"
因为您的 viewDidLoad()
将负责从属性设置 UILabel 文本
关于ios - 今天扩展在按钮事件后显示 "unable to load"(iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38853010/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |