我正在重写一个将代码从Objective-C转换为swift的教程.该应用程序从VC移动,其中有3个滑块(红色,绿色和蓝色)设置背景颜色,颜色名称的标签和链接到第二个VC的按钮.在第二个VC中,来自第一个VC的颜色用作背景,用户有机会命名颜色.
当用户输入颜色名称时,它应该将新颜色名称返回到原始VC,显示颜色名称的标签应显示输入的文本.
以下是导致问题的代码:
func textFieldShouldReturn(nameEntry: UITextField) -> Bool
{
ViewController().colourLabel.text = nameEntry.text
nameEntry.resignFirstResponder()
dismissViewControllerAnimated(true, completion: nil)
return true
}
Run Code Online (Sandbox Code Playgroud)
生成错误" 致命错误:在展开可选值时意外发现nil".但是调试nameEntry.text中有一个字符串.
我有点难过.我可以尝试为unwind segue做准备,但它本来是一个教程应用程序.
干杯
rak*_*hbs 16
ViewController()实际上创建了一个新的实例ViewController.这不是对已有的参考ViewController.你可以做的是创建一个弱变量,指向第二个ViewController中的第一个ViewController,并将其设置为prepareForSegue或显示第二个View控制器.
class SecondViewController : UIViewController {
weak var firstViewController : ViewController?
// Other code
func textFieldShouldReturn(nameEntry: UITextField) -> Bool
{
firstViewController?.colourLabel.text = nameEntry.text
nameEntry.resignFirstResponder()
dismissViewControllerAnimated(true, completion: nil)
return true
}
}
Run Code Online (Sandbox Code Playgroud)
在第一视图控制器内 prepareForSegue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SecondViewController" {
let secondViewController = segue.destinationViewController as SecondViewController
secondViewController.firstViewController = self
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5407 次 |
| 最近记录: |