2012-01-06 21 views
5

पर स्टेटिक UITableView और अन्य दृश्य को जोड़ने के लिए कैसे करें जब मैं एक स्थिर तालिका दृश्य बनाता हूं और इसे सामान्य दृश्य नियंत्रक में डालता हूं, तो मुझे एक त्रुटि मिलती है जो कहती है कि स्थिर तालिका दृश्य UITableViewController में होना चाहिए।आईओएस एक ही दृश्य नियंत्रक

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

क्या UITableViewController का उपयोग करने का कोई तरीका है और तालिका है पूर्ण स्क्रीन नहीं है ताकि मैं स्टोरीबोर्ड में एक सबव्यूव जोड़ सकूं?

यदि नहीं, तो कोड में किया जा सकता है?

किसी भी सुझाव की सराहना की जाएगी!

उत्तर

0

वास्तविक उत्तर कस्टम कंटेनर नियंत्रक बनाना है।

उदाहरण के लिए, आपके पास एक एनवी नियंत्रक के अंदर एक स्थिर तालिका दृश्य हो सकता है। इसलिए, आपको एक कंटेनर क्लास बनाने की आवश्यकता है, जैसे एनएवी नियंत्रक या जो भी हो, और उसमें स्थिर तालिका दृश्य नियंत्रक जोड़ें।

1

आप UITableViewController और एक स्थिर UITableView का उपयोग कर एक ही प्रभाव प्राप्त कर सकते हैं। तालिका के निचले हिस्से में इच्छित दृश्य बनाएं और पर UITableView पर उस दृश्य के लिए सेट करें। यह UIView ऑब्जेक्ट को लाइब्रेरी से बाहर खींचकर और तालिका दृश्य के नीचे जोड़कर किया जा सकता है (आप नीले रंग में निचला क्षेत्र हाइलाइट देखेंगे ताकि आप यह जान सकें कि आप इसे सही तरीके से कर रहे हैं)। आपको यह दिखाने के लिए सामग्री इन्सेट को समायोजित करना पड़ सकता है कि आप कैसे दिखाना चाहते हैं।

+0

पाद लेख केवल तब दिखाई देता है जब आप तालिका के नीचे होते हैं, सही? मुझे इस दृश्य को हर समय दिखने की ज़रूरत है। – lnafziger

+0

महान समाधान! आप टेबल व्यू सेक्शन के पहले या उसके बाद एक सामान्य UIView जोड़ सकते हैं जो मूल रूप से इसे दूसरे तरीके से एकीकृत करने के समान होता है और यह वास्तव में काम करता है। –

1

स्टेटिक सेल टेबल व्यू यूआईटीबल व्यू कंट्रोलर के प्रकार का होना चाहिए, लेकिन आप एक व्यू कंट्रोलर को टेबल व्यू (या 2) के साथ उपयोग करके एक ही प्रभाव प्राप्त कर सकते हैं और सेल के लिए सेलफोर एट इंडेक्सपैथ विधि का ख्याल रखना चाहते हैं, जिसे आप "स्टेटिक सेल" बनना चाहते हैं। । बस indexPath.section और .row स्विच करें और सेल को जिस तरह से आप चाहते हैं उसका निर्माण करें। अधिक कोडिंग सुनिश्चित करें, लेकिन आप एक ही प्रभाव प्राप्त करते हैं और अधिक लचीलापन के साथ यदि आप इसे ऐप्पल के स्टेटिक सेल तरीके से नहीं करना चाहते हैं।

+0

हाँ, दुर्भाग्य से यह पंक्तियों की एक बहुत सी है इसलिए मैं एक बेहतर तरीका खोजने की कोशिश कर रहा हूं! – lnafziger

2

मुझे यकीन है कि अगर यह काम करता है नहीं हूँ, लेकिन आप इस दृष्टिकोण भी कोशिश करना चाहते हो सकता है:

  1. एक UIViewController बनाएं, उदा बेसव्यू कंट्रोलर (एक कक्षा और स्टोरीबोर्ड दोनों में)
  2. एक UITableViewController उदा। MyStaticTableViewController (केवल स्टोरीबोर्ड में और इसमें एक पहचानकर्ता जोड़ें)
  3. स्टोरीबोर्ड में, अपने बेसव्यू कंट्रोलर के लिए उचित आयामों के साथ UIView का एक उदाहरण जोड़ें, उदा। myStaticTableView।
  4. प्रोग्रामेटिक रूप से, MyStaticTableViewController का MyStaticTableView में दृश्य जोड़ें।
6

आपको नियमित UITableViewController (इसलिए आपको सभी स्थिर सेल व्यवहार) और फिर तालिका दृश्य के सबव्यूव के रूप में आपका दृश्य मिलता है, लेकिन प्रबंधित किया जाता है कि यह हमेशा स्क्रीन के निचले भाग में चिपक जाता है। ऐप्पल ने इसे डब्ल्यूडब्ल्यूडीसी के रूप में प्रदर्शित किया। यहाँ मैं क्या करना है (मेरे उदाहरण में, मैं एक UIDatePicker कि मैं हमेशा तल पर लंगर डाले चाहते हैं):

viewDidLoad में, आपके विचार बना सकते हैं और तालिका देखने के एक subview के रूप में जोड़ें। इसे तालिका दृश्य के नीचे रखें।

[self.tableView addSubview:self.datePicker]; 
[self updateDatePickerBounds]; 

लागू scrollViewDidScroll ताकि आप तालिका दृश्य स्क्रॉल स्क्रीन कभी समय की तह तक आपके विचार के लिए मजबूर कर सकते हैं:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    // Keep the date picker floating above the table view, anchored to the bottom of the view 
    [self updateDatePickerBounds]; 
} 

और फिर एक समारोह के सही ढंग से आपके विचार की स्थिति है कि लागू:

- (void) updateDatePickerBounds 
{ 
    // Keep the date picker floating above the table view, anchored at the bottom 
    CGRect tableBounds = self.tableView.bounds; 
    CGRect pickerFrame = self.datePicker.frame; 
    pickerFrame = CGRectMake(tableBounds.origin.x, 
          tableBounds.origin.y + CGRectGetHeight(tableBounds) - CGRectGetHeight(pickerFrame), 
          tableBounds.size.width, 
          pickerFrame.size.height); 
    self.datePicker.frame = pickerFrame; 
} 

अंत में, यदि आप नहीं चाहते हैं कि आपकी तालिका दृश्य आपके नीचे के दृश्य में जा रहा है, तो बस तालिका दृश्य के contentInset को एच से मिलान करने के लिए सेट करें आपके आठ दृश्य।

मैं viewWillAppear से updateDatePickerBounds विधि भी कॉल करता हूं। मैं भूल गया कि मुझे ऐसा क्यों करना पड़ा।

+2

हां, यही वह बात है जिसके बारे में मैं बात कर रहा हूं - स्थिर कोशिकाओं के साथ स्थापित एक UITableViewController। मैंने वर्णित तकनीक का उपयोग करके तालिका दृश्य के ऊपर एक दृश्य फ़्लोट कर सकते हैं। मैंने इसे कई बार किया है। –

+0

अपडेट: दरअसल, अपडेट करने के लिए बेहतर जगहडेटपिकरबाउंड्स को देखने के लिए हैडलआउटआउट सबव्यूज। फिर आपको scrollViewDidScroll को ओवरराइड करने की आवश्यकता नहीं है। viewDidLayoutSubviews को डिवाइस रोटेशन के दौरान भी बुलाया जाता है, इसलिए चीजें उस मामले में भी अपडेट हो जाएंगी। –

संबंधित मुद्दे