《30天精通iPhone手机编程》-Day15-小型表格

        本章的demo主要介绍了导航控制器和列表视图的使用,这一部分是在做ios上开发使用频率最高的一部分内容,这里只涉及一些简单的,最基本的方法

//试图控制器读取到内存之后再进行调用,在程序屏幕显示读到内存后加入额外步骤对显示进行修改
- (void)viewDidLoad {
    [super viewDidLoad];
	listData = [[NSMutableArray alloc] initWithObjects:@"Row01",@"Row02",@"Row03",@"Row04",@"Row05",nil];
	
	UIBarButtonItem *addButton = [[UIBarButtonItem alloc] 
                                  initWithTitle:@"Add" 
                                          style:UIBarButtonItemStyleBordered //样式为有边距的
                                         target:self 
                                         action:@selector(AddButtonAction:)];
	self.navigationItem.leftBarButtonItem = addButton;
	self.title = @"第 15 天 小型表格";	
    self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
//单击按钮打开提示框
- (IBAction)AddButtonAction:(id)sender{
	UIAlertView *dialog  = [[UIAlertView alloc] initWithTitle:@"添加新的一行" 
                                                      message:@""
													 delegate:self 
                                            cancelButtonTitle:@"取消"  
                                            otherButtonTitles:@"确定", nil];
	rowNameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 38.0, 245.0, 20.0)];
	[rowNameField setBackgroundColor:[UIColor whiteColor]];
    //提示框dialog的子视图加入rowNameField文本框
	[dialog addSubview:rowNameField];
    [dialog show];
	[dialog release];
	[rowNameField release];
}
//单击确定在表格的最后一行添加新的一行
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    //当提示框视图中的取消按钮没有被单击,并且文本框不为空时
	if((buttonIndex != [alertView cancelButtonIndex])&&(rowNameField.text !=nil))
	{
        //定义在可修改的数组中,在数组最后添加新的一行
		[listData insertObject:[rowNameField text] atIndex: listData.count];
		[self.tableView reloadData];
	}
}
//编译标记
#pragma mark -
#pragma mark Table view data source

// 表格中的分组数量方法
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

//表格总的行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
	//表格行数的数量等于我们数组的内容的个数
	if (section == 0) return listData.count;
    else return 0;
}

//程序分组,添加每大类的标题名称
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
	NSString *title = nil;
	switch (section) {
		case 0:
			title = @"表格一";
			break;
		case 1:
			title = @"表格二";
			break;
		case 2:
			title = @"表格三";
			break;
		case 3:
			title = @"表格四";
			break;
		default:
			break;
	}
	return title;
}
//显示表格中每一行的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //创建一个字符变量CellIdentifier,用于取得文本数据类型
    static NSString *CellIdentifier = @"Cell";
    //UITableViewCell建立表格中行数的单元格,获取内容的标识符
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    //当cell为空时
    if (cell == nil) {
        //为cell重新重新获取表格内容的标识符
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    //当分组为0时
	if (indexPath.section == 0) {
        //在数组中插入与行数数字相同位置的数据
		cell.textLabel.text = [listData objectAtIndex:indexPath.row];
    }
	return cell;
}
//允许表格编辑
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
//删除指定的一行
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    //当方法的编辑样式定义为表格视图的编辑中显示删除行数的样式时
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //在数组中删除与行数数字相同的一行
		[listData removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
	}   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
    }   
}
//对表格上行或下行移动,表格内容位置进行调整
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
    //在移动到的位置加入新的一行,内容为所选择的那一行
	[listData insertObject:[listData objectAtIndex:fromIndexPath.row] atIndex: toIndexPath.row];
	//删除所选行的下一行
	[listData removeObjectAtIndex:(NSUInteger)fromIndexPath.row+1];
}
//允许表格内容位置调整的方法,允许用户移动每一行的位置
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}
《30天精通iPhone手机编程》-Day15-小型表格_第1张图片

你可能感兴趣的:(《30天精通iPhone手机编程》-Day15-小型表格)