2017-04-21 37 views
0

我一直在搜索最近两天来解决此问题。那我有问题的代码部分是:[say practiceLabelVar gets the value optional(Goldfish)]iOS标签不会更新字符串值的文本,但打印字符串在Swift中正常工作

class PracticeTyping: UIViewController { 
    @IBOutlet weak var practiceLabel: UILabel! 

    var practiceLabelVar: String? 
    var x = "test" 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    if let newPracticeLabelVar = practiceLabelVar { 

      self.practiceLabel.text = newPracticeLabelVar 

      print ("\(newPracticeLabelVar)") 

      x = newPracticeLabelVar 

     } else { 

      print ("\(x)") 

     }  
    } 
} 

我得到的输出是在控制台如下:

test 

Goldfish 

注:代码打印在别的价值语句然后在if语句中打印代码。

practiceLabel.text没有改变并保持其默认值。

请帮忙。 感谢

+0

你在哪里分配“金鱼”练习标签变量?这是因为你没有给练习变量变量赋予任何值。 – dRAGONAIR

+0

我在另一个视图中从表视图控制器分配值金鱼。当我点击一个按钮@IBAction FUNC practiceTyping(_发件人:任意){ performSegue(withIdentifier: “practiceTypingSegue”,发件人:个体经营) 让PracticeTypingVar:PracticeTyping = self.storyboard .instantiateViewController(withIdentifier:“PracticeTypingView “)as! PracticeTyping PracticeTypingVar.practiceLabelVar = myFavoriteAnimals [(发送者作为AnyObject).TAG]。名称 self.present(PracticeTypingVar,动画:真,完成:无) } – Amr

回答

0

终于想通了。根据您在上面添加的评论,您从另一个角度设置“金鱼”,如上所述,下面是代码相同@IBAction func practiceTyping(_ sender: Any) { performSegue(withIdentifier: "practiceTypingSegue", sender: self) let PracticeTypingVar: PracticeTyping = self.storyboard?.instantiateViewController(withIdentifier: "PracticeTypingView") as! PracticeTyping PracticeTypingVar.practiceLabelVar = myFavoriteAnimals[(sender as AnyObject).tag].name self.present(PracticeTypingVar, animated: true, completion: nil) }

您在这里做的是您正在展示“PracticeTyping”viewController 2次,one与performSegue()和其他与self.present(viewController)是错误的。之所以首先打印“测试”是因为当您通过performSegue呈现视图时,您没有为“practiceLabelVar”设置值。 所以删除performSegue(withIdentifier: "practiceTypingSegue", sender: self),你很好走。

+0

非常感谢,它的工作。 – Amr

+0

欢迎您:) – dRAGONAIR

0

我想请你到好心明白什么是Optional Chaining as an Alternative to Forced Unwrapping

的代码运行良好,它只是检查是否存在有或没有价值,是的,有没有价值,从而偏离航线的其他条件将被执行。尝试分配一些值,你就会明白它是如何工作

注:有一个在var practiceLabelVar: String?没有价值,如果有它一定的价值,如果再让将工作,否则将执行

+0

为practiceLabelVar的值来自tabelView和代码打印我正在寻找正确的值。我现在的问题是在practiceLabel.text中获取此值谢谢 – Amr