Split UITableView derived from pList

I'm having trouble finding an easy-to-understand tutorial about the section that is UITableView, which gets its data from the pList file.

The things that are having problems are how to properly structure the pList file to serve two different partitions.

+4
source share
1 answer

The plist root must be an array. The array must contain two dictionaries (your sections). Dictionaries will contain two keys: one for the section heading and one for the lines in the section.

Assuming you read your plist in NSArray * sections, you can return the section, number of rows, section title, and cell names using the following code.

Your plist file will look like this:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <array> <dict> <key>Title</key> <string>Section1</string> <key>Rows</key> <array> <string>Section1 Item1</string> <string>Section1 Item2</string> </array> </dict> <dict> <key>Title</key> <string>Section2</string> <key>Rows</key> <array> <string>Section2 Item1</string> <string>Section2 Item2</string> </array> </dict> </array> </plist> #import "RootViewController.h" @interface RootViewController () @property (copy, nonatomic) NSArray* tableData; @end @implementation RootViewController @synthesize tableData; - (void) dealloc { self.tableData = nil; [super dealloc]; } - (void) viewDidLoad { [super viewDidLoad]; self.tableData = [NSArray arrayWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"Table" ofType: @"plist"]]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; { return [tableData count]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; { return [[[tableData objectAtIndex: section] objectForKey: @"Rows"] count]; } - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section; { return [[tableData objectAtIndex: section] objectForKey: @"Title"]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } cell.textLabel.text = [[[tableData objectAtIndex: indexPath.section] objectForKey: @"Rows"] objectAtIndex: indexPath.row]; return cell; } @end 
+7
source

Source: https://habr.com/ru/post/1337766/


All Articles