2011-04-02 12 views
13

उद्देश्य-सी सीखने योग्य है; कोको सीखने योग्य है; मुझे इंटरफ़ेस बिल्डर और इसके वंशज Xcode 4 को पूरी तरह से अचूक करने के लिए मिलते हैं! संदर्भ के लिए कोई पाठ नहीं है (सी या ओब्जे-सी स्रोत कोड के बराबर के रूप में)। सभी विवरण सभी "यहां खींचें; कनेक्ट करें; सीटीएल वहां खींचें" और मैं खो गया हूं ....एक्सकोड में कोको बाइंडिंग 4

मैं प्रमुख तकनीकों के विभिन्न ऐप्पल उदाहरणों को पार करने की कोशिश कर रहा हूं। मैं कोको बाइंडिंग और एप्पल डेवलपर में उदाहरण NSTableViewBinding में उदाहरण फ़ाइल के माध्यम से जा रहा हूं। कोशिश करने और समझने के लिए, मैं इसे दोहराने की कोशिश कर रहा हूं।

फ़ाइल MyWindowController.m मैं Xcode 4 में ये कनेक्शन कैसे कर सकता हूँ में awakeFromNib विधि के शीर्ष पर टिप्पणी करने के लिए अब चर्चा करते हुए ???

enter image description here

  1. Object बुलाया TableArray या तो वस्तु पुस्तकालय में या स्रोत कोड में मौजूद नहीं है; वह कहां से आता है?

  2. दाईं ओर Referencing Bindings; ये कैसे बनाए गए हैं?

  3. awakeFromNib विधि के शीर्ष में उल्लिखित विभिन्न कुंजी/मान जोड़े; ये कैसे बनाए गए हैं?

मुझे पता है कि Xcode 4 एक और अधिक सरल सुधार माना जाता है, लेकिन मैं बहुत आईबी के लिए प्रतिस्थापन से उलझन में हूँ। वेब पर सभी आईबी सामग्री पूरी तरह से अलग संस्करणों को संदर्भित करती हैं, इसलिए मुझे सहायता के रास्ते में बहुत कुछ नहीं मिल रहा है।

फ़ॉलो-अप

मैं पता लगाना कोको बाइंडिंग Xcode 4 में मैं कोड की कुछ लाइनों में उदाहरण के कार्यक्रम की कार्यक्षमता नकल करने में सक्षम था में सफल था।

यहाँ मुद्दों है कि मुझे कुछ समय लिया यह पता लगाने की हैं:

  1. TableArrayArray Controller Object XIB में वस्तुओं की सूची पर वस्तु लाइब्रेरी से अधिक घसीटा है और उसके बाद नाम दिया। (ऐप्पल को नोट करें: राइट-क्लिक एचयूडी व्यू में बेस ऑब्जेक्ट क्लास अच्छा होगा)

  2. Stephen Poletto's उत्तर यह सब जोड़ने के लिए एक अमूल्य गाइड था।

  3. यह मेरे लिए तुरंत स्पष्ट नहीं था कि कैसे कनेक्शन इंटरफ़ेस को राइट-क्लिक HUD में काम करता है: figure 2

  4. भंडारण सरणी myContentArray की Array Controller Object

  5. क्लिक करें और खींचें इन्स्टेन्शियशन में निहित है TableArray के एचयूडी से कनेक्शन बनाने के लिए .h फ़ाइल में AppDelegate की परिभाषा के लिए।

+4

मुझे तुम्हारा दर्द महसूस होता है और आपके भ्रम को साझा करता है ... –

उत्तर

13

बाइंडिंग awakeFromNib टिप्पणी में वर्णित स्थापित करने के लिए:

  1. TableArray एक NSArrayController है। इंटरफ़ेस बिल्डर दस्तावेज़ के बहुत दूर बाईं ओर, आपको एक रूपरेखा दृश्य दिखाई देगा जो आपके निब में निहित सभी ऑब्जेक्ट्स दिखा रहा है। जब यह निब रनटाइम पर लोड होता है, तो सभी ऑब्जेक्ट्स अनारक्षित और तत्काल हो जाएंगे। आपके द्वारा प्रदान किए गए स्क्रीनशॉट में, आपको "टेबलएरे" नामक एनएसएआरएआर कंट्रोलर पहले से ही दिखाई देगा। यदि आपको किसी कारण से किसी अन्य को बनाने की आवश्यकता है, तो आप अपने इंटरफ़ेस बिल्डर दस्तावेज़ में ऑब्जेक्ट लाइब्रेरी (निचले दाएं) से NSArrayController खींचेंगे।
  2. इंटरफ़ेस बिल्डर में "अंतिम नाम" तालिका कॉलम का चयन करें। जब तक आप "टेबल कॉलम - अंतिम नाम" नहीं देखते हैं या आईबी के मुख्य कैनवास क्षेत्र में सीधे इसे चुनकर आप रूपरेखा दृश्य में प्रकटीकरण त्रिकोण को दबाकर ऐसा कर सकते हैं। इंस्पेक्टर (एक्सकोड विंडो के दाहिने तरफ) अब अंतिम नाम कॉलम के बारे में विवरण दिखाएंगे, क्योंकि यह वर्तमान में चयनित ऑब्जेक्ट है। बाइंडिंग इंस्पेक्टर का चयन करें। आप इंस्पेक्टर के शीर्ष पर आइकन पर होवर कर सकते हैं जब तक कि आपको "बाइंडिंग इंस्पेक्टर दिखाएं" लेबल वाला कोई नहीं मिलता - यह दाईं ओर से दूसरा है। बाइंडिंग इंस्पेक्टर आपको चयनित एनएसटीबल कॉलम के लिए सभी उजागर बाइंडिंग की एक सूची के साथ प्रस्तुत करता है। आप देखेंगे कि "वैल्यू" एक ऐसा बाध्यकारी है - और यह बाध्यकारी है जिसे हम MyWindowController.m के अनुसार स्थापित करना चाहते हैं। सभी बाध्यकारी विवरण प्रकट करने के लिए "मूल्य" के बगल में प्रकटीकरण त्रिभुज को घुमाएं।
  3. अब आप नियंत्रक निर्दिष्ट कर सकते हैं जिसके माध्यम से आप उपयोग करने के लिए बाध्यकारी और नियंत्रक/मॉडल कुंजी पथ स्थापित करना चाहते हैं। आगे बढ़ें और "बाइंड" चेकबॉक्स को चेक करें और "बाइंड टू:" पॉपअप बटन से "टेबलएरे" चुनें। फिर, "keyedObjects" को नियंत्रक कुंजी और "firstname" को मॉडल कुंजी पथ के रूप में निर्दिष्ट करें।
  4. तुम नोटिस "firstname" में प्रवेश करेंगे वजह से Xcode टूलटिप के साथ एक ग्रे चेतावनी आइकन डाल करने के लिए "Xcode में प्रवेश किया मुख्यपथ को हल नहीं कर सकते।" एक्सकोड आपके द्वारा दर्ज की गई कुंजीपटल को हल करने का प्रयास करेगा। इसलिए यदि आप एक NSArrayController उस वर्ग व्यक्ति की वस्तुओं निहित के माध्यम से बाध्यकारी रहे थे, और वर्ग व्यक्ति एक संपत्ति "पता" कहा जाता है परिभाषित, "arrangedObjects.address" उचित रूप से हल होगा और Xcode अपने मुख्यपथ के रुप में सही मान्य होगा। लेकिन इस उदाहरण में, सरणी नियंत्रक NSDictionary ऑब्जेक्ट्स का प्रबंधन कर रहा है, और एक्सकोड के लिए यह जानने का कोई तरीका नहीं है कि आप उन शब्दकोशों में कौन से कुंजी/मूल्य जोड़े संग्रहीत कर रहे हैं। आप, डेवलपर, को पता होना चाहिए कि NSArrayController में संग्रहीत शब्दकोशों में वास्तव में "firstname"/value pair शामिल है, ताकि आप चेतावनी को अनदेखा कर सकें। MyWindowController.m के शीर्ष पर सूचीबद्ध अन्य बाइंडिंग के लिए
  5. दोहराएँ।

कनेक्शन इंस्पेक्टर का रेफरेंसिंग बाइंडिंग अनुभाग आपको उन सभी बाइंडिंग्स दिखाता है जो पहले से ही चयनित नियंत्रक के माध्यम से स्थापित किए जा चुके हैं। > मान, टेबल कॉलम - - पहला नाम तो अगर आप TableArray का चयन करें और कनेक्शन निरीक्षक पर नेविगेट, अब आप "arrangedObjects.firstName" दिखाई देगा। यह आपको ऊपर स्थापित की गई बाध्यकारी दिखा रहा है।

कोको बाइंडिंग की तरह एक और अधिक उन्नत विषय में गोता से पहले, यह इंटरफ़ेस बिल्डर के साथ काम कर आराम से प्राप्त करने के लिए सार्थक हो सकता है। आईबीओलेट और आईबीएक्शन कनेक्शन बनाने के लिए इसका उपयोग करें, दोनों आईबी के भीतर और आईबी और स्रोत कोड के बीच। यूआई ऑब्जेक्ट्स के गुणों को संशोधित करने के लिए इंस्पेक्टरों का उपयोग करने के लिए उपयोग करें। इत्यादि के बाद, आप आईबी के सामान्य वर्कफ़्लो के साथ सहज महसूस करते हैं, बाध्यकारी बाध्यकारी आसान हो जाएगा। Here's मदद के लिए एक गाइड।

+0

मैं वास्तव में * * काफी समय का एक सा 'IBOutlet' और' IBActions' के साथ सहज हो रही बिताया है और साथ बटन, NSScrollViews और NSTexViews 10 तुच्छ अनुप्रयोगों लिखा है। यह सिर्फ इतना है कि यहां सीखने की अवस्था रैखिक नहीं है। यह एक और खड़ा हिस्सा है (मेरे लिए वैसे भी ...) – dawg

+0

यह मेरे लिए बहुत स्पष्ट ट्यूटोरियल है। धन्यवाद!!! एनएसएआरएआरई के लिए डेटा स्रोत के रूप में एनएसएआरएआर का उपयोग करना अवधारणात्मक रूप से बहुत ही सुरुचिपूर्ण और स्पष्ट है। आईबी में इसे तार करना मुझे इतना स्पष्ट नहीं है ... – dawg

+0

प्रश्न: क्या बाइबिल, कनेक्शन और आईबी से इंस्पेक्टरों की स्थापना की एकत्रित पाठ्य सूची देखने का कोई तरीका है? यानी, अगर मैं एक परियोजना खोलता हूं जिसे मैं ऐप्पल से डाउनलोड करता हूं, कक्षाएं और विधियां बहुत स्पष्ट हैं। आईबी ने विभिन्न ऑब्जेक्ट्स को कॉन्फ़िगर करने के तरीके को समझने के लिए, क्या मुझे बस सभी विभिन्न निरीक्षकों के माध्यम से क्लिक करने की आवश्यकता है या एक्स पर क्लिक कर सकते हैं और एक सूची प्राप्त कर सकते हैं? आप एक एक्सआईबी फ़ाइल को कैसे देखते और समझते हैं जिसे किसी और ने इकट्ठा किया? – dawg

1

द्वारा अब एकीकृत Xcode 4 इंटरफ़ेस बिल्डर बात यह है कि वर्ष इंटरफ़ेस बिल्डर से अलग नहीं है, जहाँ तक अंतर्निहित अवधारणाओं में चिंतित हैं।

एक्सकोड 3 डाउनलोड करें जो अभी भी ऐप्पल वेबसाइट में उपलब्ध है, और ऑनलाइन उपलब्ध ट्यूटोरियल का पालन करें।

या मुझे से किसी को और अधिक उपयोगी में एसओ एक अच्छा ट्यूटोरियल Xcode 4 का उपयोग लिख सकते हैं ...

कहा, मैं आपको कुछ बातें समझा कोशिश करते हैं। (लेकिन मैं वास्तव में इस बिंदु पर आपके लिए एक्सकोड 3 का उपयोग करने की सलाह देता हूं। मैं नहीं कह रहा हूं कि एक्सकोड 3 आंतरिक रूप से बेहतर है; मैं बस कह रहा हूं कि एक्सकोड 3 में अधिक ट्यूटोरियल हैं ताकि आप अवधारणा को अधिक आसानी से प्राप्त कर सकें, जो तब हो सकता है एक्सकोड 4 के साथ प्रयोग किया जाता है)

  1. एक निब/xib फ़ाइल में संग्रहीत वस्तुओं को शामिल किया गया है। इंटरफ़ेस बिल्डर में (चाहे स्टैंड-अलोन या एक्सकोड में एकीकृत) लाइव ऑब्जेक्ट्स बनाकर nib/xib फ़ाइल बनाता है, जो फ़ाइल सहेजे जाने पर संग्रहित ऑब्जेक्ट्स में फ्रीज-सूखे होते हैं। TableArray निब फ़ाइल के अंदर बनाया गया एक उदाहरण है। आप ऑब्जेक्ट लाइब्रेरी से एक सामान्य ऑब्जेक्ट को एक निब में खींच सकते हैं और अपनी कक्षा को अपनी इच्छानुसार बदल सकते हैं। इस तरह ऑब्जेक्ट बनाया गया है।

  2. आप रेफरेंसिंग बाइंडिंग नहीं बनाते हैं। बाइंडिंग में एक ऑब्जेक्ट ए से दूसरे ऑब्जेक्ट बी तक एक दिशा होती है। आप ए के पक्ष में बाइंडिंग सेट करते हैं (इस मामले में, NSTableColumn)। संदर्भित बाइंडिंग बस बी के पक्ष में इन जानकारी को दिखाएं। तो, आईबी में टेबल व्यू कॉलम का चयन करें और बाइंडिंग सेट करें।

  3. यह NSTableColumn के बाध्यकारी फलक पर किया गया है।

+0

1: तो 'टेबलएरे' बनाने के लिए क्या मैं ऑब्जेक्ट लाइब्रेरी से 'ऑब्जेक्ट्स' क्षेत्र में एक सामान्य 'ऑब्जेक्ट कंट्रोलर' खींचता हूं और फिर 'टेबलअरे' का नाम बदलता हूं? फिर क्या? 2: ** एक मिल गया !!! ** ठीक है, ए) एनएसटीबल व्यू के कॉलम हिस्से पर राइट क्लिक करें और बाइंडिंग्स हैं। 3: त्रुटि - एनएसटीबल कॉलम का 'बाध्यकारी फलक कहां है? – dawg

+0

मैं वास्तव में आपको XCode 3 डाउनलोड करने और इस चरण में इसका उपयोग करने की सलाह देता हूं। यह बहुत कम दर्दनाक है। और हिलेगैस की कोको किताब खरीदें और इसे पढ़ें। – Yuji