सबसे पहले, एक छोटी सी पृष्ठभूमि। मैं आईओएस विकास के लिए नया हूं, मैं लंबे समय से नेट भूमि में रहा हूं, और शायद यही कारण है कि मैं यह सवाल भी पूछ रहा हूं, लेकिन यहां जाता है।एक दृश्य नियंत्रक से दूसरे डेटा को पास करना; आईओएस <= 4 बनाम आईओएस 5
मूल सेटअप यह है। आपके पास UINavigationController
है RootViewController
के साथ हम MasterViewController
पर कॉल करेंगे। जब इस मास्टर व्यू कंट्रोलर पर कुछ कार्रवाई होती है, तो हम DetailsViewController
में ड्रिल करना चाहते हैं। हालांकि, हम कुछ डेटा DetailsViewController
पर भी पास करना चाहते हैं।
यह मेरी समझ है, कि एसडीके के पिछले संस्करणों में (आईओएस 5 से पहले) दृष्टिकोण यह करने के लिए समान था:
@implementation MasterViewController
-(IBAction)someAction
{
DetailsViewController *dvc = [[DetailsViewController alloc]initWithNibName:@"DetailsView" bundle:nil];
dvc.someDataProp = [self getSomeDataSomeHow];
[[self navigationController] pushViewController:dvc animated:YES];
}
@end
अब तथापि, iOS 5 में, ऐसा लगता है कि यह अब किया जाता है स्टोरीबोर्ड और segues का उपयोग कर। XCode में आप DetailsViewController को MasterViewController से segue की स्थापना की, और उसके बाद कोड में आप कुछ इस तरह करते हैं:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
[segue.destinationViewController setSomeDataProp:[self getSomeDataSomeHow]];
}
मेरा प्रश्न मूल रूप से यह है: पुराने दृष्टिकोण किसी भी तरह एक बहुत मेरे लिए क्लीनर लगता है। आप ViewController
के प्रकार के बारे में बहुत स्पष्ट हैं, आप नेविगेशन स्टैक पर जा रहे हैं और आप आसानी से गुण सेट कर सकते हैं। नए दृष्टिकोण में, destinationViewController
प्रकार id
(स्पष्ट कारणों से) है, और यह मुझे बहुत कम साफ महसूस करता है। दोबारा, यह मेरा नेट पक्ष हो सकता है, लेकिन यह आईओएस में आम है? बस आईडी का उपयोग करें और हवा में सावधानी बरतें?
स्निपेट की प्रतिलिपि बनाने और चिपकाने के बजाय यह कैसे किया जाता है, यह पूछने के लिए बहुत सम्मान है। मेरे पास भी इसी तरह के प्रश्न थे और यहां कुछ अनुभव के साथ मेरा जवाब है: आईओएस 5 के साथ, मैं देखता हूं कि यूआई तर्क दो में विभाजित किया गया है: 1) व्यू कंट्रोलर लाइफसाइकिल और संक्रमण 2) डेटा प्रवाह।स्टोरीबोर्ड 1 का ख्याल रखता है और डेवलपर्स से 2 की देखभाल करने की उम्मीद है। ऐसे परिदृश्य में, ये जानवर होंगे। मेरे लिए, सवाल यह है कि क्या यह विभाजन समझ में आता है? क्या इन दो अवधारणाओं को रद्द किया जा सकता है? मुझे लगता है कि ऐप्पल इस तरह से जा रहा है और हम देखेंगे कि यह कैसे काम करता है। – Guven