【问题标题】:xcode swift won´t change label textxcode swift不会更改标签文本
【发布时间】:2015-09-16 19:33:10
【问题描述】:

我有两种观点。第一个是“homeView”,第二个是“detailView”。

在 homeView 我有两个按钮 按钮1 按钮2

详细查看我的标签 标签1

当我按下 button1 时,应更改为“detailView”,label1.text 应为“button 1 gedrückt” 当我按下 button2 时,应更改为“detailView”,label1.text 应为“button 2 gedrückt”

当我使用代码时:

@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!

@IBAction func button1(sender: UIButton) {

    let vc : AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier("detailview")
    self.showViewController(vc as! UIViewController, sender: vc)


    // self.label1.text = "button 1 gedrückt"

}

视图会改变,但 label1.text 不会改变。 如果我使用

@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!

@IBAction func button1(sender: UIButton) {

    let vc : AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier("detailview")
    self.showViewController(vc as! UIViewController, sender: vc)


    self.label1.text = "button 1 gedrückt"

}

我会得到一个错误:

我不知道我能做什么??

【问题讨论】:

  • 检查您的故事板中与label1 的连接。您的问题的可能原因是它没有连接。该属性是一个隐式取消引用的可选,因此如果您在未连接时尝试访问它,它将崩溃

标签: ios swift uilabel exc-bad-instruction


【解决方案1】:

确保您的标签已连接到您的插座或是否重复。如果没问题,请尝试删除连接并重新连接。下图说明了我在说什么。

【讨论】:

    【解决方案2】:

    非常感谢。 现在我可以使用此代码更改 label1 中的文本

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        if (segue.identifier == "segueTest") {
            let svc = segue.destinationViewController as! SecondViewController;
    
            svc.toPass = label2.text
    
        }
    }
    

    现在还有一个问题?我可以把这个“覆盖函数”放到 IBAction 中吗?因为我想添加更多按钮。每个按钮的 label1 中都应该有另一个文本。

    谢谢(我是 Xcode 和 swift 的绝对初学者)

    【讨论】:

    • 其实不是。每次你转到另一个视图时,都会调用 prepareForSegue。无需将其放入 IBAction。尝试在堆栈溢出中打开另一个问题,详细了解发生了什么,以便我们解决您的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多