头文件:
- #import <UIKit/UIKit.h>
- @interface QQstyleViewController : UIViewController<UITableViewDelegate, UITableViewDataSource> {
- UITableView *table;
- NSMutableArray *array;
- BOOL *flag;
- }
- @property (nonatomic, retain) UITableView *table;
- @end
实现文件:
- #import "QQstyleViewController.h"
- @implementation QQstyleViewController
- @synthesize table;
- - (void)viewDidLoad {
- [super viewDidLoad];
- table = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
- table.delegate = self;
- table.dataSource = self;
- [self.view addSubview:table];
- NSArray *ary1 = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", @"4", nil];
- NSArray *ary2 = [[NSArray alloc] initWithObjects:@"A", @"B", @"C", @"D", @"E", nil];
- NSArray *ary3 = [[NSArray alloc] initWithObjects:@"a", @"b", @"c", @"d", nil];
- array = [[NSMutableArray alloc] initWithObjects:ary1, ary2, ary3, nil];
- [ary1 release];
- [ary2 release];
- [ary3 release];
- flag = (BOOL *) malloc([array count] * sizeof(BOOL *));
- memset(flag, NO, sizeof(flag));
- }
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- return [array count];
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- if (flag[section]) {
- return [(NSArray *)[array objectAtIndex:section] count];
- }
- else {
- return 0;
- }
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- static NSString *CellIdentifier = @"CellIdentifier";
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- if (cell == nil) {
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
- cell.selectionStyle = UITableViewCellSelectionStyleNone;
- }
- NSString *str = [[array objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
- cell.textLabel.text = str;
- return cell;
- }
- - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
- {
- UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
- btn.tag = section;
- [btn addTarget:self action:@selector(headerClicked:) forControlEvents:UIControlEventTouchUpInside];
- return btn;
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
- return 30;
- }
- -(void)headerClicked:(id)sender
- {
- int sectionIndex = ((UIButton *)sender).tag;
- flag[sectionIndex] = !flag[sectionIndex];
- [table reloadData];
- }
- - (void)dealloc {
- free(flag);
- [array release];
- [table release];
- [super dealloc];
- }
- @end
示例图: