0
votes

Problème effectuant SEGUE à partir de la TableView to ViewController

J'essaie d'effectuer une SEGUE à partir d'un 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.

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 NewsDetailViewController strong> est comme celui-ci: P>

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"

        }

    }

}


0 commentaires

3 Réponses :


1
votes

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
    }
}


0 commentaires

1
votes

dans la méthode code> PREPAREPRYFORSEGUEGUEGUEGUEGUEGUEGUEGUEGUEGUEGUEGUEGE CODE> NOUVELSITLE code> n'est toujours pas initialisée, c'est donc nil code>.

Généralement, vous ne devriez pas. t Définissez les propriétés de la vue de VC cible dans 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
}


0 commentaires

1
votes

Lorsque le Préparez (pour: expéditeur :) est appelé, NewsDetailViewController 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 tel que var NewsTletext: chaîne? . Ensuite, dans ViewDiDload Vous pouvez appeler newstitle.text = newstitletext .


0 commentaires