2013-01-03 20 views
12

का उपयोग करने के लिए स्टोरीबोर्ड में एक स्टैंडअलोन दृश्य बनाएं I स्टोरीबोर्ड का उपयोग करके UIView बनाने और डिज़ाइन करने का प्रयास कर रहा हूं लेकिन इसे UIActionSheet प्रोग्रामेटिक रूप से शामिल करें। यह पिक्सलप्रोग्रामेटिक रूप से

वर्ष xcode में साथ CoreGraphics स्थिति कार्यों का उपयोग कर मुझे याद है कि यह किसी भी नियंत्रक के बिना निब पर एक UIView खींचें करने के लिए संभव हो गया था से बचने के लिए मूल रूप से है।

दृश्य स्पष्ट रूप से, वर्ग से जुड़े होने की है तो यह एक IBOutlet होता है, लेकिन self.view

एक बात है कि मुझे इस तरह संभव हो जाना चाहिए महसूस करने के लिए नहीं जोड़ा जा रहा है कि यदि आप एक खींचें नियंत्रक काला बार स्टोरीबोर्ड में यह इतना की तरह जगह में पॉप में UIView:

Snapped in UIView

लेकिन इसकी स्क्रीन अपने आप पर नहीं दिखाया। इस सुविधा के लिए क्या है? क्या मैं किसी भी तरह से इस दृश्य को खोल सकता हूं और इसे थोड़ा सा डिजाइन कर सकता हूं?

+0

इस लिंक http://stackoverflow.com/questions/9498010/custom-views-with-storyboard – python

उत्तर

14

बस एक नया .xib फ़ाइल बनाएँ।

  1. नेविगेटर क्षेत्र में कहीं भी राइट क्लिक करें और 'नई फ़ाइल ...' चुनें।
  2. दाईं ओर सूची से 'उपयोगकर्ता इंटरफ़ेस' का चयन करें और 'देखें' चुनें।
  3. 'अगला', 'अगला' पर क्लिक करें, अपना नया दृश्य एक नाम दें, और 'बनाएं'।
  4. आपकी परियोजना में एक नया .xib fill जोड़ा जाएगा।
  5. नई .xib फ़ाइल पर डबल क्लिक करें और यह इंटरफ़ेस बिल्डर (स्टोरीबोर्ड नहीं) में खुलता है।
  6. अपनी पसंद को संपादित/डिज़ाइन करें।

तब के बाद आप अपने नए (.xib) इंटरफ़ेस बिल्डर में दृश्य है, यह UIView का एक नया उपवर्ग बनाने का एक सरल बात है (उदा। MyView), अपने नए देखने के वर्ग स्विचिंग (.xib) MyView में, अपने नियंत्रक में MyView का एक उदाहरण बनाते हुए, और इसे अपने अन्य दृश्य में एक सबव्यूव के रूप में जोड़ना।


* और वह छोटी सी काली पट्टी तल पर के बारे में अपने सवाल का जवाब देने, यह 'डॉक' कहा जाता है, और यह सिर्फ अपने दृश्य के शीर्ष-स्तरीय दस्तावेजों की एक मिनी प्रतिनिधित्व है। डॉक आइकनों को जल्दी खींचने/छोड़ने और कनेक्शन बनाने के लिए सुविधाजनक है। सेब के स्टोरीबोर्ड विवरण here देखें। रे वेंडरलिच को स्टोरीबोर्ड here पर ट्यूटोरियल का पालन करना आसान है।

+0

xib राय यह है कि मैं बना लिया है सीमा है कि मैं दे दिया सम्मान नहीं करता है पसंद करते हैं। यह सिर्फ पूरी स्क्रीन 'फ्रेम = (0 0; 320 302) भरने के रूप में दिखाता है; '। क्या आपको पता है कि मुझे कुछ "निश्चित" सीमा निर्धारित करने के लिए xib के लिए कुछ विशेष करने की आवश्यकता है? –

+0

@YarekT हां, 'सिम्युलेटेड मेट्रिक्स' के तहत 'फ्रीफॉर्म' होने के लिए 'आकार' ड्रॉपडाउन सेट करें। आपको यह एक्सकोड यूटिलिटी एरिया के इंस्पेक्टर फलक में चौथे टैब (शासक आइकन के बाईं ओर) के नीचे मिल जाएगा। – sean

+0

मेरे पास पहले से ही सेट था। उत्पत्ति की स्थापना ने ईथर को कुछ भी नहीं बदला। दृश्य * आकार * सही ढंग से आकार दिया गया है, लेकिन इसकी फ्रेम और सीमाएं पूर्ण स्क्रीन आकार पर सेट की गई हैं: http://i.imgur.com/IGQeE.png (शीर्ष navbar * xib UIView का हिस्सा नहीं है) –

6

आप एक स्टोरीबोर्ड पर एक UIViewController के UIView बाहर नहीं हो सकता। मैं इसका अनुमान लगा रहा हूं क्योंकि स्टोरीबोर्ड को यह नहीं पता होगा कि वर्तमान एपीआई को कैसे पहचानना या तत्काल करना है। यह कुछ है जो मैंने अपने लिए उपयोग किया है। समाधान सिर्फ एक UIView के लिए एक एक्सआईबी का उपयोग करता है और इसे प्रोग्रामेटिक रूप से लोड करता है (जैसा कि करने के लिए किया जाता है)। मुझे कई आइटमों और जोड़े XIB के लिए स्टोरीबोर्ड का उपयोग करके कई दृश्य नियंत्रकों में पुनः उपयोग करने योग्य दृश्यों के लिए अच्छी तरह से काम करने के लिए मिल गया है।

यहाँ कुछ कोड मैं एक कस्टम वस्तु के हिस्से के रूप में एक XIB लोड करने के लिए के साथ वस्तु प्रारंभ हो जाता है का उपयोग करें।

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     [[[NSBundle mainBundle] loadNibNamed:@"BannerView" owner:self options:nil] objectAtIndex:0]; 
     [self addSubview:self.view]; 
     self.frame = self.view.frame; 
    } 
    return self; 
} 

स्टोरीबोर्ड पर काले बार में दृश्यों को खींचने के लिए। वे विचार अभी भी UIViewController का हिस्सा हैं, लेकिन वे शीर्ष स्तर के दृश्य का 'सबव्यूव' नहीं हैं। मुझे लगता है कि दस्तावेज़ रूपरेखा पदानुक्रम अच्छी तरह से दिखाता है।

निम्नलिखित दृश्य में 2.1.1 देखें, 2.1.2 देखें, आदि मेरे मुख्य दृश्य पदानुक्रम के बाहर क्योंकि वे मेरे मुख्य दृश्य के सबव्यू नहीं हैं। नतीजा यह है कि वे डिफ़ॉल्ट रूप से प्रदर्शित नहीं होंगे। मेरे पास IBOutlets सेटअप है और मैं मानक addSubview: और removeFromSuperview का उपयोग करके उन्हें अपने मुख्य दृश्य पदानुक्रम से सशर्त रूप से जोड़/हटा देता हूं।

IB Document Outline example

+0

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

+0

मैंने कोशिश नहीं की है, लेकिन इससे शायद अधिक समस्याएं हो सकती हैं जटिल दृश्य नियंत्रक। मैं इसे ओवरले के लिए उपयोग करता हूं जो आम तौर पर उपयोगकर्ता को दिखाई नहीं देता है। यह मेरी स्टोरीबोर्ड से छुपे ऑब्जेक्ट्स के अव्यवस्था को हटा देता है और संभवतः जब तक आवश्यक हो, उन्हें मुख्य दृश्य से दूर रखकर दृश्य (महत्वहीन रूप से) को गति देता है। – DBD

+0

@Eric क्योंकि स्टोरीबोर्ड आपको UIViewController के बिना UIView बनाने नहीं देता है। मुझे लगा कि क्या यह मुझे दृश्य को डॉक में खींचने देता है और एक सबव्यू नहीं तो मैं इसे प्रोग्रामिंग के लिए यूआईएक्शनशीट से जोड़ सकता हूं। जैसा कि आपने सही तरीके से बताया है कि समाधान केवल एक दृश्य के साथ एक अलग xib बनाने के लिए है –