Tôi đang học cách tạo chế độ xem bảng trong iOS. Tôi biết cách tạo một bảng gồm một hoặc nhiều phần, nhưng tôi không biết cách thêm tiêu đề vào trước mỗi phần.Thêm tiêu đề riêng cho từng phần của UITableView
Đây là mã của tôi.
TableViewController.h
#import <UIKit/UIKit.h>
@interface TableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>{
NSMutableArray *tableDataSource;
}
@end
TableViewController.m
#import "FourthViewController.h"
@implementation TableViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)dealloc{
[super dealloc];
[tableDataSource release];
}
- (void)didReceiveMemoryWarning{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad{
[super viewDidLoad];
UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 460) style:UITableViewStyleGrouped];
[table setDataSource:self];
[table setDelegate:self];
[table release];
tableDataSource = [[NSMutableArray alloc]init];
NSMutableArray* sec1 = [[NSMutableArray alloc] init];
[sec1 addObject:@"1"];
[sec1 addObject:@"2"];
[sec1 addObject:@"3"];
[tableDataSource addObject:sec1];
[sec1 release];
NSMutableArray* sec2 = [[NSMutableArray alloc] init];
[sec2 addObject:@"One"];
[sec2 addObject:@"Two"];
[sec2 addObject:@"Three"];
[tableDataSource addObject:sec2];
[sec2 release];
[self.view addSubview:table];
}
- (void)viewDidUnload{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - Table
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableDataSource == nil)
return 1;
return [tableDataSource count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSInteger bucketCount = -1;
NSObject *target_section;
if (tableDataSource == nil)
return 0;
if((bucketCount = [tableDataSource count]) < 1 || bucketCount <= section || (target_section = [tableDataSource objectAtIndex:section ]) == nil)
return 0;
return [ (NSMutableArray*)target_section count ];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]] autorelease];
}
cell.textLabel.text = (NSString*)[ (NSMutableArray*)[tableDataSource objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
@end
Cảm ơn bạn. Điều gì sẽ xảy ra nếu số phần nhiều hơn hai? – lavitanien
Thêm người khác nếu chặn. Hoặc sử dụng chuyển đổi trường hợp. – Akshay