uitableviewUitableview के साथ प्रारंभ करना


टिप्पणियों

यह अनुभाग इस बात का अवलोकन प्रदान करता है कि क्या है

इसमें किसी भी बड़े विषयों का उल्लेख किया जाना चाहिए, और संबंधित विषयों के लिए लिंक करना चाहिए। चूँकि uitableview के लिए दस्तावेज़ीकरण नया है, इसलिए आपको उन संबंधित विषयों के प्रारंभिक संस्करण बनाने की आवश्यकता हो सकती है।

प्रतिनिधि और डेटा स्रोत विधियाँ:

प्रत्येक तालिका दृश्य में एक प्रतिनिधि और एक डेटा स्रोत होना चाहिए।

डेलिगेट तरीके

प्रतिनिधि विधियों में से कोई भी वास्तव में आवश्यक नहीं है, हालांकि आपको टेबल व्यू लागू करने की आवश्यकता होगी: didSelectRowAtIndexPath: टेबल सेल पर स्पर्श को संभालने के लिए:

और अन्य तरीके हैं ...

// Display customization

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;

// Variable height support

// If these methods are implemented, the above -tableView:heightForXXX calls will be deferred until views are ready to be displayed, so more expensive logic can be placed there.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;

// Section header & footer information. Views are preferred over title should you decide to provide both

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;   // custom view for header. will be adjusted to default or specified header height
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;   // custom view for footer. will be adjusted to default or specified footer height

// Accessories (disclosures). 

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;

// Selection

// Called before the user changes the selection. Return a new indexPath, or nil, to change the proposed selection.
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath;
// Called after the user changes the selection.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;


// Editing

// Allows customization of the editingStyle for a particular cell located at 'indexPath'. If not implemented, all editable cells will have UITableViewCellEditingStyleDelete set for them when the table has editing property set to YES.
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath;

// Controls whether the background is indented while editing.  If not implemented, the default is YES.  This is unrelated to the indentation level below.  This method only applies to grouped style table views.
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath;

             

// Indentation

- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath; // return 'depth' of row for hierarchies
 

डेटा स्रोत आवश्यक तरीके:

डेटा स्रोत से निम्न विधियाँ आवश्यक हैं: tableView: numberOfRowsInSection: और tableView: cellForRowAtIndexPath:। यदि आपकी तालिका एक समूहीकृत तालिका है, तो आपको संख्याओं को लागू करना होगा।

आवश्यक तरीके : -

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

// Row display.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
 

वैकल्पिक तरीके : -

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;              // Default is 1 if not implemented

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;    // fixed font style. use custom view (UILabel) if you want something different
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;

// Editing

// Individual rows can opt out of having the -editing property set for them. If not implemented, all rows are assumed to be editable.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;

// Moving/reordering

// Allows the reorder accessory view to optionally be shown for a particular row. By default, the reorder control will be shown only if the datasource implements -tableView:moveRowAtIndexPath:toIndexPath:
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath;

// Index

- (NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView;                                                    // return list of section titles to display in section index view (e.g. "ABCD...Z#")
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index;  // tell table which section corresponds to section title/index (e.g. "B",1))

// Data manipulation - insert and delete support

// After a row has the minus or plus button invoked (based on the UITableViewCellEditingStyle for the cell), the dataSource must commit the change
// Not called for edit actions using UITableViewRowAction - the action's handler will be invoked instead
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;

// Data manipulation - reorder / moving support

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath;
 

एक टेबल सेल की शारीरिक रचना

डिफ़ॉल्ट UITableViewCell में कई मानक डेटा दृश्य और साक्षात्कार हैं।

  • सेल.टेक्स्टलैब - सेल के लिए यूआईबेल
  • cell.detailTextLabel - एक छोटा UILabel जो पाठ लेबल के नीचे दिखाई देता है
  • cell.imageView - एक UIImageView कि सेल के बाईं ओर

वैकल्पिक एक्सेसरी दृश्य में निम्न में से एक आइकन हो सकता है। डिफ़ॉल्ट एक्सेसरी टाइप UITableViewCellAccessoryNone है

UITableView विस्तार से

UITableView क्या है?

UITableView एक सबसे अधिक उपयोग किया जाने वाला उपयोगकर्ता इंटरफ़ेस ऑब्जेक्ट है जो डेटा को एक ही कॉलम में कई पंक्तियों की स्क्रॉल करने योग्य सूची में प्रस्तुत करता है जिसे अनुभागों में भी विभाजित किया जा सकता है। यह केवल ऊर्ध्वाधर स्क्रॉलिंग की अनुमति देता है और UIScrollView का एक उपवर्ग है।

हम UITableView का उपयोग क्यों करते हैं?

हम UITableView का उपयोग उन विकल्पों की एक सूची प्रस्तुत करने के लिए कर सकते हैं, जिनका चयन किया जा सकता है, पदानुक्रम से संरचित डेटा के माध्यम से नेविगेट करने के लिए, वस्तुओं का एक विस्तृत सूची प्रस्तुत करना , वर्गों का उपयोग करने वाले नेत्रहीन अलग-अलग समूहों में विस्तार से जानकारी और नियंत्रण प्रदर्शित करना।

हम अपने कॉन्टैक्ट्स, मेलिंग लिस्ट आदि में UITableView उपयोग देख सकते हैं। इसका उपयोग न केवल टेक्स्ट डेटा को पेश करने के लिए किया जाता है, बल्कि टेक्स्ट के साथ इमेज भी लिस्ट की जा सकती हैं जैसे कि YouTube ऐप में।

स्टोरी बोर्ड का उपयोग करके UITableView स्थापित करने या स्थापित करने पर विस्तृत निर्देश।

  1. सिंगल व्यू एप्लिकेशन के लिए एक सरल प्रोजेक्ट बनाएं।
  2. ऑब्जेक्ट लायब्रेरी में, "तालिका दृश्य" ऑब्जेक्ट का चयन करें और इसे अपने दृश्य नियंत्रक के दृश्य में खींचें। बस प्रोजेक्ट चलाने पर आपको लाइनों वाला एक खाली पृष्ठ दिखाई देगा।
  3. अब यदि आप केवल सामग्री के साथ एक स्क्रॉल करने योग्य दृश्य चाहते हैं, तो एक UIView को UITableView में खींचें, इसके आकार को समायोजित करें और बाकी UIElements को उस दृश्य में आवश्यकतानुसार खींचें। लेकिन अगर आप समान प्रारूप की सूची प्रस्तुत करना चाहते हैं, तो हम UITableViewCell उपयोग करते हैं।
  4. UITableViewCell वर्ग उन कोशिकाओं के गुणों और व्यवहार को परिभाषित करता है जो UITableView ऑब्जेक्ट्स में दिखाई देते हैं। इस वर्ग में सेल सामग्री और पृष्ठभूमि (पाठ, चित्र और कस्टम दृश्य सहित) की स्थापना और प्रबंधन के लिए गुण और विधियाँ शामिल हैं, सेल चयन और हाइलाइट स्थिति का प्रबंधन, सहायक विचारों का प्रबंधन, और सेल सामग्री के संपादन की शुरुआत।
  5. UITableViewCell का उपयोग करने का सबसे अच्छा हिस्सा पुन: प्रयोज्य है। DequeueReusableCellWithIdentifier का उद्देश्य कम मेमोरी का उपयोग करना है। उदाहरण के लिए, यदि आपके पास 1000 प्रविष्टियों की सूची है और एक बार में केवल 10 प्रविष्टियाँ दिखाई देती हैं, तो केवल दृश्यमान कक्षों को स्मृति में आवंटित किया जाता है, जब उपयोगकर्ता सूची को स्क्रॉल करते हैं तो शेष पुन: उपयोग किए जाते हैं। बस आपको UITableViewCell को ड्रैग करके tableView पर ड्रॉप करना होगा। फिर सेल पर क्लिक करें-> विशेषता निरीक्षक पर जाएँ-> तालिका दृश्य शैली को कस्टम और पहचानकर्ता के लिए सेट करें जिसमें आप कुछ भी कहेंगे।
  6. अब हमें डेटा स्रोत के अनुरूप होने की आवश्यकता है ताकि ऑब्जेक्ट किसी अन्य ऑब्जेक्ट को डेटा दे। उदाहरण के लिए, UITableViewDataSource प्रोटोकॉल में cellForRowAtIndexPath और numberOfRowsInSection जैसे तरीके हैं जो तालिका में प्रदर्शित होने चाहिए। जबकि प्रतिनिधि प्रकार की वस्तु उन क्रियाओं पर प्रतिक्रिया करती है जो दूसरी वस्तु लेती है। उदाहरण के लिए, UITableViewDelegate प्रोटोकॉल में एक तालिका में किसी विशेष पंक्ति का चयन करने वाले उपयोगकर्ता पर कार्य करने के लिए didSelectRowAtIndexPath जैसे तरीके हैं। 7. जब आप डेटा स्रोत के अनुरूप होते हैं तो आपको इसकी आवश्यक विधि लागू करने की आवश्यकता होती है
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
        // Here you need to give the total number of items you want to list. For example if you want list of 2 numbers, then:

           return 2; 

 }
 

तथा

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

//Here you need to dequeue the reusable cell which we discussed in point 5. Then you can modify your cell here according to you and customize it here as per your requirement. Here the call comes for numberOfRows number of times. 

static NSString *cellIdentifier = @"cellID";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
cellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc]initWithStyle:
    UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
} 
if(indexPath.row){
    [cell.textLabel setText:"1"];
}else{
    [cell.textLabel setText:"2"];
}

return cell;
}
 
  1. NSIndexPath के बारे में भी: - NSIndexPath वर्ग nn सरणी संग्रह के एक पेड़ में एक विशिष्ट नोड के लिए पथ का प्रतिनिधित्व करता है। इस पथ को अनुक्रमणिका पथ के रूप में जाना जाता है। इसकी वस्तुएं हमेशा लंबाई की होती हैं 2. उनका उपयोग टेबल व्यू सेल को इंडेक्स करने के लिए उदाहरण के लिए किया जाता है। NSIndexPath ऑब्जेक्ट में पहले इंडेक्स को अनुभाग कहा जाता है, दूसरा पंक्ति है। खंड 0 और पंक्ति 0 के साथ एक अनुक्रमणिका पथ ऑब्जेक्ट पहले खंड में पहली पंक्ति को इंगित करता है। सूचकांक पथ बनाने के लिए [NSIndexPath indexPathForRow:inSection:] का उपयोग करें।