Je travaille sur le cours de développement de Stanford IOS en ligne et j'ai un bug que je ne sais pas comment gérer. Lorsque je passe à la vue de détail dans le contrôleur de vue partagée, je suis en mesure de définir les paramètres du détail UIView à partir du détail UIViewController dans le didSet de sortie à la vue. Plus tard, lorsque j'essaie d'accéder ou de muter la vue de détail du contrôleur, la variable de vue (outlet) est nulle même si la vue est toujours à l'écran et répond aux gestes. Cette méthode est la préparation de la vue du maître dans le contrôleur d'affichage diviséVoir le point de vente après le segue
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationViewController = segue.destination
if let graphViewController = destinationViewController as? GraphViewController {
if let identifier = segue.identifier{
switch identifier {
case "DisplayGraph":
graphViewController.function = funcForGraphView(_:)
default:
break
}
}
}
}
Ceci est le contrôleur de vue de détail. J'ai commenté les parties intéressantes.
class GraphViewController: UIViewController {
@IBOutlet weak var graphView: GraphView!{
didSet{
graphView.addGestureRecognizer(UITapGestureRecognizer(target: graphView, action: #selector(graphView.tap(recognizer:))))
graphView.addGestureRecognizer(UIPanGestureRecognizer(target: graphView, action: #selector(graphView.pan(recognizer:))))
graphView.addGestureRecognizer(UIPinchGestureRecognizer(target: graphView, action: #selector(graphView.zoom(recognizer:))))
graphView.function = cos //I can set variables in the view here
// After this didSet I am no longer able to set or read any variables from the graphView
}
}
var function: ((Double)->(Double))? {
didSet{
if let newfunction = function {
graphView.function = newfunction // I can not set or access variables in the view here since for some reason graphView is nil
}
}
}
Et ceci est la variable pertinente dans la vue détaillée
var function: ((Double) -> Double)? {
didSet{
setNeedsDisplay()
}
}
Storyboard Picture Toute aide serait grandement appréciée et nous espérons que ce n'est pas une question stupide. Si plus d'informations seraient utiles, faites le moi savoir. Merci!
Merci beaucoup qui était beaucoup d'aide. – harryejp
@harryejp Marquer comme accepter si vous travaillez pour vous – KKRocks