xcode swift不会更改标签文本

Posted

技术标签:

【中文标题】xcode swift不会更改标签文本【英文标题】:xcode swift won´t change label text 【发布时间】: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 的连接。您的问题的可能原因是它没有连接。该属性是一个隐式取消引用的可选,因此如果您在未连接时尝试访问它,它将崩溃 【参考方案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。尝试在堆栈溢出中打开另一个问题,详细了解发生了什么,以便我们解决您的问题。

以上是关于xcode swift不会更改标签文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中更改标签文本的颜色

swift中tableView的单元格高度扩展时更改标签文本

xcode在presentViewController之后更改标签的文本

遵循 Xcode 的 Apple 'Food Tracker' 教程 - 无法获取更改标签文本的按钮

在 Xcode 8 和 Swift 3 中写入文本文件并在应用重新启动时保持更改 [重复]

使用 Swift (Xcode 6) 更改 BarButtonItem 字体