2017-06-16 11 views
0

我在我的应用程序中遇到问题。从导航栏中的酒吧按钮项到另一个视图控制器的争论不会运行我的代码?

我增加了一个栏按钮项目到我的导航栏和Ctrl它拖动到另一个视图控制器进行测试时,如预期该工作。我将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)") 
     } 

    } 

} 
+1

给该标识符来原因请看并使用prepareForSegue方法和代码的执行之后执行SEGUE –

回答

1

将您firstViewControllersecondViewController而不是赛格瑞和identifier添加它来代替。然后在您的按钮操作,你只是这样做:

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

添加下面的功能,如果你想传递的任何值:

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

我仍然有问题,并管理其使用

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

但它必须来自VC,我想来自我所期望的。

这是停止该发生的事情正确的问题是按钮。当我在导航栏中创建它时,我不会接触到内部,因此为了克服这个问题,我制作了按钮,并将它放在VC上,而不是它的导航栏,我将它作为普通链接并添加了我的代码,然后拖动它进入导航栏,一切正常!

相关问题