J'ai 2 étiquettes de texte sur un contrôleur de vue et je veux connecter le texte des étiquettes aux UIButtons et UILabels correspondants sur un autre View Controller. Maintenant, lorsque j'appuie sur le bouton "thisUploadPhoto", il charge 2 écrans de l'écran suivant, au lieu d'un seul écran. Si vous pouviez m'aider avec ça, ce serait génial. Aussi, quand je presse les faits et annuler les boutons sur le PhotoLabelViewController
il me donne cette erreur:Pourquoi les données ne passent-elles pas entre les contrôleurs de vue? Swift 3
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[tot.PhotoShareLabelViewController didTapDone:]: unrecognized selector sent to instance 0x7f8cecf5d0b0'
Quand il est censé imprimer « fait »
Je ne sais pas pourquoi mon code ci-dessous ISN » t travaillant sur la connexion des 2 contrôleurs de vue ensemble.
import UIKit
class PhotoShareViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var contentTextView: UITextView!
@IBOutlet weak var thatTextField: UITextField!
@IBOutlet weak var thisTextField: UITextField!
var presenter: PhotoShareModuleInterface!
var image: UIImage!
@IBAction func thisUploadPhoto(_ sender: Any) {
if thisTextField.text != "" && thatTextField.text != ""
{
performSegue(withIdentifier: "segue", sender: self)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var photoShareLabelViewController = segue.destination as! PhotoShareLabelViewController
photoShareLabelViewController.thisString = thisTextField.text!
photoShareLabelViewController.thatString = thatTextField.text!
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
imageView.image = image
}
override var prefersStatusBarHidden: Bool {
return true
}
@IBAction func didTapCancel(_ sender: AnyObject) {
presenter.cancel()
presenter.pop()
}
@IBAction func didTapDone(_ sender: AnyObject) {
guard let message = thatTextField.text, !message.isEmpty else {
return
}
guard let messageOne = thisTextField.text, !messageOne.isEmpty else {
return
}
presenter.finish(with: image, content:message)
presenter.dismiss()
}
}
extension PhotoShareViewController: PhotoShareViewInterface {
var controller: UIViewController? {
return self
}
}
import UIKit
class PhotoShareLabelViewController: UIViewController {
@IBOutlet weak var thisLabel: UILabel!
@IBOutlet weak var thatLabel: UILabel!
@IBOutlet weak var thisButton: UIButton!
@IBOutlet weak var thatButton: UIButton!
var thisCounter = 0
var thatCounter = 0
var presenter: PhotoShareModuleInterface!
var image: UIImage!
@IBAction func pressedThisButton(_ sender: Any) {
thisCounter += 1
print(thisCounter)
}
@IBAction func pressedThatButton(_ sender: Any) {
thatCounter += 1
print(thatCounter)
}
var thisString = String()
var thatString = String()
@IBAction func pressedButtonDone(_ sender: Any) {
print("done")
}
@IBAction func pressedButtonCancel(_ sender: Any) {
print("cancel")
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
thisLabel.text = thisString
thisButton.setTitle(thisString, for: UIControlState.normal)
thatLabel.text = thatString
thatButton.setTitle(thatString, for: UIControlState.normal)
}
}
Pourriez-vous s'il vous plaît ajouter une image avec votre 'storyboard'? Il serait utile de savoir comment ça fonctionne. –