Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从导航栏中的工具栏按钮项切换到另一个视图控制器不会运行我的代码?_Ios_Swift_Xcode_Segue - Fatal编程技术网

Ios 从导航栏中的工具栏按钮项切换到另一个视图控制器不会运行我的代码?

Ios 从导航栏中的工具栏按钮项切换到另一个视图控制器不会运行我的代码?,ios,swift,xcode,segue,Ios,Swift,Xcode,Segue,我的应用程序中的segues出现问题 我在导航栏中添加了一个栏按钮项,并按ctrl键将其拖动到另一个视图控制器,该视图控制器在测试时按预期工作。这次我用ctrl键再次拖动它,使它在自己的VC中成为一个动作,并添加了代码 我想在按下时发生什么,以及执行segue,但只有segue发生。如果我删除了segue,那么代码就会运行,但是我不能让两者像我期望的那样一起工作 这是我的密码: import UIKit import CoreData class NewClientViewController

我的应用程序中的segues出现问题

我在导航栏中添加了一个栏按钮项,并按ctrl键将其拖动到另一个视图控制器,该视图控制器在测试时按预期工作。这次我用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从第一个ViewController拖动到第二个ViewController,并为其添加标识符。然后在按钮操作中,您只需执行以下操作:

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上,而不是导航栏上,我将其正常链接,添加代码,然后将其拖到导航栏中,一切正常

将标识符指定给segue,并使用prepareForSegue方法,在代码执行后执行segue