134在单元格中自动排列指定的数据

效果如下:

134在单元格中自动排列指定的数据

ViewController.h

1 #import <UIKit/UIKit.h>

2 

3 @interface ViewController : UITableViewController

4 @property (strong, nonatomic) NSMutableArray *mArrDataList;

5 @property (strong, nonatomic) NSMutableArray *mArrSortedCollation;

6 

7 @end

ViewController.m

  1 #import "ViewController.h"

  2 #import "Friend.h"

  3 

  4 #define collation [UILocalizedIndexedCollation currentCollation]

  5 @interface ViewController ()

  6 - (void)layoutUI;

  7 - (void)loadData;

  8 - (void)loadCollationData;

  9 @end

 10 

 11 @implementation ViewController

 12 

 13 - (void)viewDidLoad {

 14     [super viewDidLoad];

 15     

 16     [self layoutUI];

 17 }

 18 

 19 - (void)didReceiveMemoryWarning {

 20     [super didReceiveMemoryWarning];

 21     // Dispose of any resources that can be recreated.

 22 }

 23 

 24 - (void)layoutUI {

 25     [self loadData];

 26     [self loadCollationData];

 27     

 28     self.view.backgroundColor = [UIColor whiteColor];

 29     self.navigationItem.title = @"在单元格中自动排列指定的数据";

 30 }

 31 

 32 /**

 33  *  加载数据

 34  */

 35 - (void)loadData {

 36     NSBundle *bundle = [NSBundle mainBundle];

 37     NSURL *urlFriendsInfo = [bundle URLForResource:@"FriendsInfo" withExtension:@"plist"];

 38     NSDictionary *dicFriendsInfo = [NSDictionary dictionaryWithContentsOfURL:urlFriendsInfo];

 39     NSInteger len = [dicFriendsInfo count];

 40     _mArrDataList = [[NSMutableArray alloc] initWithCapacity:len];

 41     for (NSInteger i=0; i<len; i++) {

 42         NSString *strKey = [NSString stringWithFormat:@"%lu", (unsigned long)(i+1)];

 43         NSDictionary *dicData = [dicFriendsInfo objectForKey:strKey];

 44         

 45         Friend *friend = [[Friend alloc] initName:[dicData objectForKey:@"name"]

 46                                          withDesc:[dicData objectForKey:@"desc"]

 47                                      withLocation:[dicData objectForKey:@"location"]

 48                                       withImgIcon:[UIImage imageNamed:strKey]];

 49         [_mArrDataList addObject:friend];

 50     }

 51 }

 52 

 53 /**

 54  *  加载排序规则数据

 55  */

 56 - (void)loadCollationData {

 57     //UILocalizedIndexedCollation *collation = [UILocalizedIndexedCollation currentCollation];

 58     NSUInteger sectionCount = [collation sectionTitles].count; //分组总数为27;即A-Z, #。([collation sectionTitles]和[collation sectionIndexTitles]的值是相同的,指针地址不同)

 59     NSLog(@"排序规则分组标题是%@", [collation sectionTitles]);

 60     

 61     //创建包含2层嵌套内容的可变长数组mArrCollation

 62     NSMutableArray *mArrCollation = [[NSMutableArray alloc] initWithCapacity:sectionCount]; //第1层

 63     for (NSUInteger i=0; i< sectionCount; i++) {

 64         [mArrCollation addObject:[[NSMutableArray alloc] initWithCapacity:1]]; //第2层

 65     }

 66     

 67     for (Friend *friend in _mArrDataList) {

 68         NSInteger section = [collation sectionForObject:friend

 69                                 collationStringSelector:@selector(name)]; //注意这里使用排序规则的方法,需为对象;不能为NSDictionary(无法找到适合的selector)

 70         [mArrCollation[section] addObject:friend];

 71     }

 72     

 73     //将mArrCollation的第2层数据进行排序并逐个分组添加到新的可变长数组_mArrSortedCollation

 74     _mArrSortedCollation = [[NSMutableArray alloc] initWithCapacity:sectionCount];

 75     for (NSMutableArray *mArrSection in mArrCollation) {

 76         NSArray *arrSortedSection = [collation sortedArrayFromArray:mArrSection

 77                                             collationStringSelector:@selector(name)]; //注意这里使用排序规则的方法,需为对象;不能为NSDictionary(无法找到适合的selector)

 78         [_mArrSortedCollation addObject:arrSortedSection];

 79     }

 80 }

 81 

 82 #pragma mark - TableView

 83 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

 84     NSString *strTitle = nil;

 85     if ([_mArrSortedCollation[section] count] > 0) {

 86         strTitle = [collation sectionTitles][section];

 87     }

 88     return strTitle;

 89 }

 90 

 91 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

 92     return _mArrSortedCollation.count;

 93 }

 94 

 95 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

 96     return [_mArrSortedCollation[section] count];

 97 }

 98 

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

100     static NSString *cellIdentifier = @"cellIdentifier";

101     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

102     if (!cell) {

103         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

104     }

105     

106     Friend *friend = _mArrSortedCollation[indexPath.section][indexPath.row];

107     cell.textLabel.text = friend.name;

108     cell.detailTextLabel.text = friend.desc;

109     cell.imageView.image = friend.imgIcon;

110     

111     return cell;

112     

113     

114     /*

115      UITableViewCellStyleDefault:带imageView;只含水平居左的textLabel

116      UITableViewCellStyleValue1:带imageView;含水平居左的textLabel和水平居右的detailTextLabel(左右结构)

117      UITableViewCellStyleValue2:不带imageView;含水平居左的textLabel和水平居左的detailTextLabel(左右结构)

118      UITableViewCellStyleSubtitle:带imageView;含垂直居上的textLabel和垂直居下的detailTextLabel(上下结构)

119      */

120     

121     /*

122      typedef NS_ENUM(NSInteger, UITableViewCellStyle) {

123      UITableViewCellStyleDefault,    // Simple cell with text label and optional image view (behavior of UITableViewCell in iPhoneOS 2.x)

124      UITableViewCellStyleValue1,        // Left aligned label on left and right aligned label on right with blue text (Used in Settings)

125      UITableViewCellStyleValue2,        // Right aligned label on left with blue text and left aligned label on right (Used in Phone/Contacts)

126      UITableViewCellStyleSubtitle    // Left aligned label on top and left aligned label on bottom with gray text (Used in iPod).

127      };             // available in iPhone OS 3.0

128      */

129 }

130 

131 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

132     return 60.0;

133 }

134 

135 #pragma mark - TableView, sectionIndexTitle

136 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

137     return [collation sectionIndexTitles];

138 }

139 

140 - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {

141     return [collation sectionForSectionIndexTitleAtIndex:index];

142 }

143 

144 @end

Friend.h

 1 #import <Foundation/Foundation.h>

 2 #import <UIKit/UIKit.h>

 3 

 4 @interface Friend : NSObject

 5 @property (copy, nonatomic) NSString *name;

 6 @property (copy, nonatomic) NSString *desc;

 7 @property (copy, nonatomic) NSString *location;

 8 @property (strong, nonatomic) UIImage *imgIcon;

 9 - (id)initName:(NSString *)name withDesc:(NSString *)desc withLocation:(NSString *)location withImgIcon:(UIImage *)imgIcon;

10 

11 @end

Friend.m

 1 #import "Friend.h"

 2 

 3 @implementation Friend

 4 

 5 - (id)initName:(NSString *)name withDesc:(NSString *)desc withLocation:(NSString *)location withImgIcon:(UIImage *)imgIcon {

 6     if (self = [super init]) {

 7         self.name = name;

 8         self.desc = desc;

 9         self.location = location;

10         self.imgIcon = imgIcon;

11     }

12     return self;

13 }

14 

15 @end

AppDelegate.h

1 #import <UIKit/UIKit.h>

2 

3 @interface AppDelegate : UIResponder <UIApplicationDelegate>

4 @property (strong, nonatomic) UIWindow *window;

5 @property (strong, nonatomic) UINavigationController *navigationController;

6 

7 @end

AppDelegate.m

 1 #import "AppDelegate.h"

 2 #import "ViewController.h"

 3 

 4 @interface AppDelegate ()

 5 @end

 6 

 7 @implementation AppDelegate

 8 

 9 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

10     _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

11     ViewController *viewController = [[ViewController alloc] init];

12     _navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

13     _window.rootViewController = _navigationController;

14     //[_window addSubview:_navigationController.view]; //当_window.rootViewController关联时,这一句可有可无

15     [_window makeKeyAndVisible];

16     return YES;

17 }

18 

19 - (void)applicationWillResignActive:(UIApplication *)application {

20 }

21 

22 - (void)applicationDidEnterBackground:(UIApplication *)application {

23 }

24 

25 - (void)applicationWillEnterForeground:(UIApplication *)application {

26 }

27 

28 - (void)applicationDidBecomeActive:(UIApplication *)application {

29 }

30 

31 - (void)applicationWillTerminate:(UIApplication *)application {

32 }

33 

34 @end

FriendsInfo.plist

  1 <?xml version="1.0" encoding="UTF-8"?>

  2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

  3 <plist version="1.0">

  4 <dict>

  5     <key>1</key>

  6     <dict>

  7         <key>name</key>

  8         <string>小明</string>

  9         <key>desc</key>

 10         <string>干啥呢?</string>

 11         <key>location</key>

 12         <string>广州</string>

 13     </dict>

 14     <key>2</key>

 15     <dict>

 16         <key>name</key>

 17         <string>痞子</string>

 18         <key>desc</key>

 19         <string>好好学习,天天向上!</string>

 20         <key>location</key>

 21         <string>广州</string>

 22     </dict>

 23     <key>3</key>

 24     <dict>

 25         <key>name</key>

 26         <string>疯子</string>

 27         <key>desc</key>

 28         <string>倚楼听风雨,淡看江湖路。</string>

 29         <key>location</key>

 30         <string>广州</string>

 31     </dict>

 32     <key>4</key>

 33     <dict>

 34         <key>name</key>

 35         <string>梦醒</string>

 36         <key>desc</key>

 37         <string>书到用时方恨少</string>

 38         <key>location</key>

 39         <string>广州</string>

 40     </dict>

 41     <key>5</key>

 42     <dict>

 43         <key>name</key>

 44         <string>落落</string>

 45         <key>desc</key>

 46         <string>生日快乐!</string>

 47         <key>location</key>

 48         <string>广州</string>

 49     </dict>

 50     <key>6</key>

 51     <dict>

 52         <key>name</key>

 53         <string>丫丫</string>

 54         <key>desc</key>

 55         <string>做个踏实的科研女</string>

 56         <key>location</key>

 57         <string>广州</string>

 58     </dict>

 59     <key>7</key>

 60     <dict>

 61         <key>name</key>

 62         <string>乐天平</string>

 63         <key>desc</key>

 64         <string>在火车上</string>

 65         <key>location</key>

 66         <string>广州</string>

 67     </dict>

 68     <key>8</key>

 69     <dict>

 70         <key>name</key>

 71         <string>北暮</string>

 72         <key>desc</key>

 73         <string>好久不见!</string>

 74         <key>location</key>

 75         <string>广州</string>

 76     </dict>

 77     <key>9</key>

 78     <dict>

 79         <key>name</key>

 80         <string>苹果</string>

 81         <key>desc</key>

 82         <string>喜欢苹果,更喜欢青苹果!</string>

 83         <key>location</key>

 84         <string>广州</string>

 85     </dict>

 86     <key>10</key>

 87     <dict>

 88         <key>name</key>

 89         <string>木头</string>

 90         <key>desc</key>

 91         <string>清心薄欲 静躁作学</string>

 92         <key>location</key>

 93         <string>广州</string>

 94     </dict>

 95     <key>11</key>

 96     <dict>

 97         <key>name</key>

 98         <string>醉清风</string>

 99         <key>desc</key>

100         <string>一醉解千愁</string>

101         <key>location</key>

102         <string>广州</string>

103     </dict>

104     <key>12</key>

105     <dict>

106         <key>name</key>

107         <string>浅の斯</string>

108         <key>desc</key>

109         <string>想剪短发……剪还是不剪(⊙o⊙)?</string>

110         <key>location</key>

111         <string>广州</string>

112     </dict>

113     <key>13</key>

114     <dict>

115         <key>name</key>

116         <string>虚伪</string>

117         <key>desc</key>

118         <string>讨厌虚伪</string>

119         <key>location</key>

120         <string>广州</string>

121     </dict>

122     <key>14</key>

123     <dict>

124         <key>name</key>

125         <string>阁楼</string>

126         <key>desc</key>

127         <string>窗外的风景。</string>

128         <key>location</key>

129         <string>广州</string>

130     </dict>

131 </dict>

132 </plist>

 

你可能感兴趣的:(数据)