• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 今天扩展在按钮事件后显示 "unable to load"(iOS)

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:13:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

早上好!

我的 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()
    }    

}

代码非常简单和基本 - 所以我想知道这个简单机制中的问题。我希望你能帮助我!

非常感谢!



Best Answer-推荐答案


您的代码假定在调用 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap