ios - 在 Swift 中将变量传递回父级

标签 ios xcode swift

我正在重新编写一个教程,将代码从 Objective-C 转换为 swift。该应用程序从 VC 移动,其中有 3 个 slider (红色、绿色和蓝色)设置背景颜色、颜色名称标签和链接到第二个 VC 的按钮。在第二个 VC 中,第一个 VC 的颜色用作背景,用户有机会命名颜色。

当用户输入颜色名称时,它应该将新的颜色名称返回给原始 VC,并且显示颜色名称的标签应该显示输入的文本。

以下是导致问题的代码:

func textFieldShouldReturn(nameEntry: UITextField) -> Bool
{
    ViewController().colourLabel.text = nameEntry.text
    nameEntry.resignFirstResponder()
    dismissViewControllerAnimated(true, completion: nil)
    return true
}

生成错误“ fatal error :在展开可选值时意外发现 nil”。但是调试 nameEntry.text 中有一个字符串。

我有点难过。我可以尝试为 unwind segue 做准备,但它应该是一个教程应用程序。

干杯

最佳答案

ViewController() 实际上创建了一个新的 ViewController 实例。这不是对已经存在的 ViewController 的引用。您可以做的是在第二个 ViewController 中创建一个指向第一个 ViewController 的弱变量,并在 prepareForSegue 或显示第二个 View Controller 时设置它。

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
    }
}

在第一个 View Controller 内 prepareForSegue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "SecondViewController" {

        let secondViewController = segue.destinationViewController as SecondViewController
        secondViewController.firstViewController = self
    }
}

关于ios - 在 Swift 中将变量传递回父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28476036/

相关文章:

ios - UIButton 子类中的 imageview.transform 奇怪行为

ios - 如何在 UINavigationBar 下方添加 UISegmentControl?

swift - 在tableviewcell中进行segue的委托(delegate)方法

swift - 嵌套函数使 Swift 编译器崩溃

ios - 登录后隐藏/更改 GIDSignInButton

iphone - 在横向模式下制作 iOS 应用程序

iphone - linkshare.com 能否用于跟踪 Apple 应用商店中的免费应用转化情况?

iphone - 什么都没用!证书和供应把我的生活变成了人间 hell

ios - Xcode 7.1 : Simulator can't be opened because the identity of developer cannot be confirmed

ios - 无法从框架 iOS Swift 访问公共(public)类