Μετάβαση στο περιεχόμενο


Φωτογραφία

Βοηθεια για μεταφορα δεδομενων μεταξυ viewcontrollers


  • Παρακαλούμε συνδεθείτε για να απαντήσετε
3 μηνύματα σε αυτό το θέμα

#1   piyiotisk

piyiotisk

    iPH newbie

  • 48 μηνύματα
  • Φύλο: Δ/Α

Δημοσίευση 13/11/2012 - 19:23

Έχω 2 viewcontrollers και θέλω να μεταφερω δεδομενα από τον εναν στον αλλο.βασικα είναι αντικειμενο pickerview και θα ηθελα να με βοηθησετε να καταλαβω λιγο τον κωδικα.




- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
((DateChooserViewController *)segue.destinationViewController).delegate=self;

}

το παραδειγμα ειναι απο το βιβλιο sams teach your self iphone programming in 24 hours

Ad

Ad

Team
iPhoneHellas
3,1416 μηνύματα
Twitter: @android
Φύλο: Όπως το δει κανείς
Κινητό: Android
Tablet: Για τα κουνούπια

Γιατί να γίνετε μέλη;

#2   ssarl

ssarl

    iPH newbie

  • 30 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone X

Δημοσίευση 13/11/2012 - 20:21

Η prepareForSegue καλείται λίγο πριν γίνει push ένας νέος ViewController με την χρήση segue. Είναι το κατάλληλο σημείο να περάσει κάποιος δεδομένα στον νέο ViewController. Στο συγκεκριμένο παράδειγμα προφανώς υπάρχει ένα property (weak) στον νέο ViewController με το όνομα delegate (κλασικό delegation pattern) και ο νέος ViewController (DateChooserViewController) ενημερώνεται για το ότι σαν delegate θα χρησιμοποιήσει τον υπάρχοντα view controller. Με αυτόν τον τρόπο μπορείς να καλέσεις συναρτήσεις ή να κάνεις access properties του αρχικού ViewController από τον DateChooserViewController που θα γίνει push. Καλό θα ήταν (αν και όχι αυστηρά απαραίτητο) να υλοποιείται ταυτόχρονα και ένα protocol (δηλωμένο στον αρχικό ViewController συνήθως) στο οποίο θα πρέπει το delegate member του DateChooserViewController να υπακούει και ο αρχικός ViewController να υλοποιεί.

Τελευταία επεξεργασία από: ssarl, 13/11/2012 - 20:26


#3   piyiotisk

piyiotisk

    iPH newbie

  • 48 μηνύματα
  • Φύλο: Δ/Α

Δημοσίευση 13/11/2012 - 20:30

Δηλαδη στο delegate περναει το destinationViewController αρα αν χρησιμοποιησω το delegate στο αρχικο viewController είναι σαν να εχω προσβαση στη destinationViewController class?

#4   ssarl

ssarl

    iPH newbie

  • 30 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone X

Δημοσίευση 13/11/2012 - 21:15

Ναι. Το delegate δηλώνεται συνήθως τύπου id οπότε μπορείς να περάσεις οποιοδήποτε object. Για να μην είναι όλα χύμα, ο σωστός προγραμματιστής επιβάλει στο delegate να υπακούει σε κάποιο protocol δηλαδή να υλοποιεί ένα πολύ συγκεκριμένο interface (κλήσεις συναρτήσεων ή properties). Αυτά για το συγκεκριμένο παράδειγμα που φέρνεις. Μπορείς βέβαια να περάσεις δεδομένα σε συγκεκριμένα πεδία του destinationViewController. Για παράδειγμα αν θέλεις να περάσεις ένα NSString στο destinationViewController μπορείς να έχεις ένα property myDataString σε αυτόν και στην prepareForSegue να του βάζεις τα data που θέλεις να του περάσεις.




Χρήστες που διαβάζουν αυτό το θέμα: 0

0 μέλη, 0 επισκέπτες, 0 ανώνυμοι χρήστες