2012-02-06 17 views
28

के लिए करता है मेरे पास एक UIViewController सबक्लास है जिसे मैंने पहले बनाया था जिसका XIB फ़ाइल में नियंत्रण था।एक्सकोड स्टोरीबोर्ड का उपयोग दृश्य नियंत्रक को तत्काल करने के लिए करें जो XIB का उपयोग अपने डिजाइन

मैं अब इस स्टोरीबोर्ड में इस व्यू कंट्रोलर का उपयोग करना चाहता हूं, लेकिन ऐसा लगता है कि मैं स्टोरीबोर्ड में व्यू कंट्रोलर का क्लासनाम इंगित कर सकता हूं, मैं इसे XIB लोड करने के लिए नहीं कह सकता।

मैं XIB से सब कुछ स्टोरीबोर्ड पर नहीं ले जाऊंगा बल्कि इसे अपने अलग XIB में रखूंगा।

मैं अपने XIB को लोड करने के लिए स्टोरीबोर्ड में यह UIViewController कैसे प्राप्त कर सकता हूं?

उत्तर

49
  1. स्टोरीबोर्ड में दृश्य नियंत्रक द्वारा निहित दृश्य हटाएं।

  2. तब दृश्य नियंत्रक वर्ग के रूप में एक ही नाम के साथ एक निब फ़ाइल कॉन्फ़िगर करके दृश्य प्रदान करते हैं। उदाहरण के लिए यदि दृश्य नियंत्रक वर्ग को MyViewController कहा जाता है, तो अपनी xib फ़ाइल MyViewController.xib नाम दें।

संपादित ध्यान दें कि स्विफ्ट बीज 5, इस तकनीक को तोड़ने क्योंकि यह .xib फ़ाइल यह की तलाश में के नाम mangles शुरू कर दिया। वर्कअराउंड के लिए मेरा उत्तर यहां देखें: https://stackoverflow.com/a/25539016/341994 असल में यह नाम मिलान आईओएस 8 में टूटा हुआ था, लेकिन तब ऐप्पल ने पश्चाताप किया और इसे ठीक कर दिया ताकि यह आईओएस 9 में फिर से काम करता है।

+0

यह दृश्य नियंत्रक को एनआईबी लोड करने का कारण क्यों बनाता है? – user1175914

+4

बस इसे आज़माएं! फिर सीखें कि नियंत्रक कैसे मेरी पुस्तक पढ़कर निब्स लोड करते हैं: http://www.apeth.com/iOSBook/ch19.html – matt

+0

@ user1175914 UIViewController का डिफ़ॉल्ट कार्यान्वयन कक्षा नाम के साथ नामित XIB को कॉल करता है। इसलिए अगर ओबीजेसी रनटाइम को स्टोरीबोर्ड में व्यू कंट्रोलर नहीं मिलता है, तो इसे सामान्य रूप से एनआईबी को कॉल करने के लिए डिफ़ॉल्ट होना चाहिए। या आप loadNibNamed: या कुछ कहकर एनआईबी लोडिंग का अपना कार्यान्वयन प्रदान कर सकते हैं। – KPM