J'essaie d'effectuer une SEGUE à partir d'un C'est facile et je l'ai fait quelques fois ... mais je ne sais pas ce que je fais de mal à faire cette fois-ci. P> Le utableview code> avec des nouvelles. Si vous appuyez sur l'une des nouvelles, il effectue une SEGUE sur les nouvelles spécifiques que vous avez sélectionnées.
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("you selected the row: \(indexPath.row)")
tableView.deselectRow(at: indexPath, animated: true)
self.performSegue(withIdentifier: "goToNewsDetail", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToNewsDetail" {
if let destination = segue.destination as? NewsDetailViewController {
destination.newsLink = "whateverlink"
destination.newsTitle.text = "whatevertitle"
}
}
}
3 Réponses :
Cette ligne est le problème
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "goToNewsDetail" { if let destination = segue.destination as? NewsDetailViewController { destination.newsLink = "whateverlink" destination.toSend = "whatevertitle" } } } class NewsDetailViewController: UIViewController { @IBOutlet weak var newsTitle:UILabel! var toSend = "" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.newsTitle.text = toSend } }
dans la méthode code> PREPAREPRYFORSEGUEGUEGUEGUEGUEGUEGUEGUEGUEGUEGUEGUEGE CODE> NOUVELSITLE code> n'est toujours pas initialisée, c'est donc Généralement, vous ne devriez pas. t Définissez les propriétés de la vue de VC cible dans nil code>.
PREPARYFORSEGUEGUE CODE>. Vous devez déclarer un
NEWSTITLETLEXTEXT CODE> Propriété dans
NewsDetailViewController CODE>: P>
override func viewDidLoad() {
super.viewDidLoad()
// Hides the navigation bar.
self.navigationController?.setNavigationBarHidden(true, animated: false)
newsTitle.text = newsTitleText
}
Lorsque le Préparez (pour: expéditeur :) code> est appelé,
NewsDetailViewController code> n'a pas encore chargé la vue afin que vous ne puissiez pas définir le texte sur une étiquette. Ce que vous voulez faire, c'est créer une autre propriété sur
NewsDetailViewController code> tel que
var NewsTletext: chaîne? Code>. Ensuite, dans
ViewDiDload code> Vous pouvez appeler
newstitle.text = newstitletext code>. P>