【问题标题】:Text from TextBox to Widget?从 TextBox 到 Widget 的文本?
【发布时间】:2015-11-07 07:32:37
【问题描述】:

所以我正在制作一个 iOS 应用程序,它允许您在 TextBox 中输入文本,然后有一个按钮将在标签上显示“文本”,并且标签上的“文本”将显示在通知中心,在一个小部件上,但是出了点问题因为每次我运行应用程序时它都会失败并把我扔到AppDelegate.Swift 并突出显示这个特定部分:“class AppDelegate: UIResponder, UIApplicationDelegate {

出现“线程 1:信号 SIGABRT”的错误

我不知道还能做什么;(请帮忙!!

这是 ViewController.Swift 代码:

import UIKit

class ViewController: UIViewController {

    @IBOutlet var UserInput: UITextField!

    @IBOutlet var TextDisplay: UILabel!

    @IBAction func DisplayButton(sender: AnyObject) {

        let Text:String = UserInput.text!

        if  let Text = Int(Text) {

            print("Computer says no!")

        } else {
            TextDisplay.text = (Text)

        }



    }


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        let SharedDefaults = NSUserDefaults(suiteName: "group.St33v3n.TextOnWidget")

        SharedDefaults?.setObject(UserInput, forKey: "StringKey")

        SharedDefaults?.synchronize()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

这是 TodayView 控制器代码(来自小部件的代码):

import UIKit

import NotificationCenter

class TodayViewController: UIViewController, NCWidgetProviding {


    @IBOutlet var TextToWidget: UILabel!


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view from its nib.

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)) {


        let ShareDefaults = NSUserDefaults(suiteName:"group.St33v3n.TextOnWidget")

        self.TextToWidget.text = ShareDefaults?.objectForKey("StringKey") as? String

        completionHandler(NCUpdateResult.NewData)
    }

}

【问题讨论】:

  • 控制台打印什么?也许像这样:unexpectadly found nil while unwrapping an optional value?

标签: ios swift swift2 xcode7


【解决方案1】:

排队

SharedDefaults?.setObject(UserInput, forKey: "StringKey")

您传递的是 UITextField 对象,而不是文本。你应该使用

SharedDefaults?.setObject(UserInput.text, forKey: "StringKey")

我不确定这是否会导致崩溃,但无论如何它都需要更正;)

【讨论】:

  • 谢谢大卫!是的,似乎停止了崩溃,现在有一个问题,在小部件上它没有显示文本,默认情况下它只显示文本“Hello world”有什么想法吗?
  • 当然 ;) 您必须以某种方式调用小部件更新,因为小部件不会定期更新。例如,您可以使用MMWormhole,或者您必须使用 NSTimer 或 dispatch_after() 定期更新小部件。
  • 想知道些什么吗?迷路了,哈哈,好吧,我会检查一下,也许我想出了怎么做,否则,如果我不明白,我还能问你吗?
  • 问题是,你必须告诉小部件,它应该更新它的内容。方法 widgetPerformUpdateWithCompletionHandler() 基本上只在显示小部件时调用。请先检查Apple documentation。有很多教程,比如Ray Wenderlichcode.tutsplus.com
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
相关资源
最近更新 更多