ios - 从导航栏中的栏按钮项到另一个 View Controller 的 Segue 不会运行我的代码?

标签 ios swift xcode segue

我在我的应用程序中遇到问题。

我在我的导航栏中添加了一个栏按钮项,然后按住 ctrl 将其拖到另一个 View Controller ,该 View Controller 在测试时按预期工作。这次我再次按住 ctrl 键拖动它,使其成为自己 VC 中的一个 Action 并添加了代码。

当它被按下时我想要发生什么以及执行 segue 但只有 segue 发生。如果我删除 segue,那么代码会运行,但我无法让两者像我预期的那样一起工作。

这是我的代码:

import UIKit
import CoreData

class NewClientViewController: UIViewController, UITextFieldDelegate {

    var managedObjectContext: NSManagedObjectContext!

    @IBOutlet weak var nameTextField: UITextField!
    @IBOutlet weak var ageTextField: UITextField!
    @IBOutlet weak var telephoneTextField: UITextField!
    @IBOutlet weak var emailTextField: UITextField!
    @IBOutlet weak var heightTextField: UITextField!
    @IBOutlet weak var weightTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    }

    // Dismiss keyboard when empty space tapped
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        nameTextField.endEditing(true)
        ageTextField.endEditing(true)
        telephoneTextField.endEditing(true)
        emailTextField.endEditing(true)
        heightTextField.endEditing(true)
        weightTextField.endEditing(true)
    }

    // Dismiss keyboard when return tapped
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {

        textField.resignFirstResponder()

        return true
    }

    @IBAction func saveButton(_ sender: Any) {

        let clientItem = Client(context: managedObjectContext)

        clientItem.name = nameTextField.text
        clientItem.age = ageTextField.text
        clientItem.telephone = telephoneTextField.text
        clientItem.email = emailTextField.text
        clientItem.height = heightTextField.text
        clientItem.weight = weightTextField.text

        do
        {
            try self.managedObjectContext.save()
            print("Successfully Saved!")
        }
        catch
        {
            print("Could not save data \(error.localizedDescription)")
        }

    }

}

最佳答案

将一个 segue 从您的 firstViewController 拖到您的 secondViewController 并向其添加一个 identifier。然后在您的按钮操作中,您只需执行以下操作:

performSegue(withIdentifier: "yourIdentifier", sender: nil)

如果要传递任何值,请添加以下函数:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "yourIdentifier" {
        let secondViewController = segue.destination as! SecondViewController
    }
}

关于ios - 从导航栏中的栏按钮项到另一个 View Controller 的 Segue 不会运行我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44595625/

相关文章:

ios - 如何使 View 始终在应用程序的屏幕上可见?

iphone - UISwipeGestureRecognizer 和 UIPanGestureRecognizer 单一 View 问题

ios - 格式化和弦和歌词的文本 Textview 或 UiLabel Swift

ios - 如何使用 SwiftyJSON(在 Swift 中)基于 JSON 对象数组创建对象数组?

ios - Swift .writeToFile 不更新 mainBundle 中的 JSON 文件

html - iOS 13 Swift 5 wkwebview - 将文档目录中的图像显示到 wkwebview 真实设备中

c++ - 用于静音未使用变量警告的跨平台宏

jquery - iOS 设备上不显示透明的 PNG div

iphone - Dev、AdHoc 和 App Store 构建的不同设置

ios - iPad 应用程序中的旋转