繁体   English   中英

从导航栏中的栏按钮项到另一个视图控制器的Segue无法运行我的代码?

[英]Segue from bar button item in navigation bar to another view controller won't run my code?

我的应用程序出现问题。

我在导航栏中添加了一个bar按钮项,然后按ctrl将其拖动到另一个视图控制器,该控制器在测试时可以按预期工作。 这次,我再次将其拖动以使其成为自己的VC中的一个动作,并添加了代码。

我想在按下并执行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到您的secondViewControllersecondViewController添加一个identifier 然后在您的按钮操作中,您只需执行以下操作:

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

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

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

我仍然遇到问题,并设法使用

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

但是它必须来自我想从中获得的VC。

阻止此操作正常发生的问题是按钮。 当我在导航栏中创建它时,我无法在其中进行触摸,因此为了克服这一点,我做了一个按钮并将其放置在VC上而不是它在导航栏中,我将其正常链接起来并添加了我的代码,然后拖动它进入导航栏,一切正常!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM