1 表格显示
UITableViewController 通过tableView属性管理UITableView
同时继承UITableViewDataSource协议 UITableViewDelegate协议
(1) 简单显示
:
在创建UITableViewController子类,覆盖:
//返回表格行数
- (NSInteger)tableView: (UITableView*)
numberOfRowsInSection: (NSInteger)
//创建单元显示内容
- (UITableViewCell*)tableView:(UITableView*)tableView
cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
static NSString* identifier = @"basis-cell";
UITableViewCell* cell = [tableView
dequeueReusableCellWithIdentifier: identifier];
if ( nil == cell ) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:identifier];
[cell autorelease];
}
cell.textLabel.text = [dataSource_ objectAtIndex:indexPath.row];
return cell;
}
(2)选择动作
- (void)tableView:(UITableView*)tableView
didSelectRowAtIndexPath:(NSIndexPath*)indexPath {
NSString* message = [dataSource_ objectAtIndex:indexPath.row];
UIAlertView* alert = [[[UIAlertView alloc] init] autorelease];
alert.message = message;
[alert addButtonWithTitle:@"OK"];
[alert show];
}
(3) 分段显示:
//返回段的数目
- (NSInteger)
numberOfSectionsInTableView: (UITableView*)
//返回对应段的段名
- (NSString*)tableView: (UITableView*)
titleForHeaderInSection: (NSInteger)
(4) 分组显示
改变表格显示的形式 默认
UITableViewStylePlain分段显示
在init函数方法中:添加 self = [super
initWithStyle:
UITableViewStyleGrouped]
(5) 段脚显示
- (NSString*)tableView:(UITableView*)tableView
titleForFooterInSection: (NSInteger)section {
return [keys_ objectAtIndex:section]; }
(6)索引
表格右侧索引列表
- (NSArray*)sectionIndexTitlesForTableView: (UITableView*)tableView {
return keys_;
}
2 单元定制
(1) 尺寸与颜色 分隔线
UITableView:
self.tableView.
backgroundColor
= [UIColor blackColor]; //< 背景颜色
self.tableView.
rowHeight
= 128.0; //< 单元的尺寸
self.tableView.
separatorColor
= [UIColor redColor]; //< 红色分隔线
self.tableView.
separatorStyle
= UITableViewCellSeparatorStyleNone; //去除分割线
UITableViewCellSeparatorStyleSingleLine;
UITableViewCellSeparatorStyleSingleLineEtched
UITabelViewCell:
cell.textLabel.textColor = [UIColor whiteColor]; //< 文本颜色变成白色
cell.textLabel.textAlignment = UITextAlignmentCenter; //< 中间对齐
cell.textLabel.font = [UIFont systemFontOfSize:64]; //< 字体为64
(3)追加图片
//在单元的imageView属性中设置图片 images_ 是图片数组
cell.
imageView.image
= [images_ objectAtIndex:indexPath.row];
(4) 追加细节
static NSString* identifier = @"
styles-subtitle";
cell = [[UITableViewCell alloc]
initWithStyle:
UITableViewCellStyleStyleSubtitle
reuseIdentifier:identifier];
UITableViewCellStyleStyleDefault 无详细节UITableViewCellStyleStyleValue1 详细信息靠最后UITableViewCellStyleStyleValue2 详细信息挨着标题
cell.
detailTextLabel.text
= [details_ objectAtIndex:indexPath.row]; //details_中保存副标题
(5) 追加附件
cell.accessoryType =
UITableViewCellAccessoryNone; //无附件
UITableViewCellAccessoryDisclosureIndicator //右箭头UITableViewCellAccessoryDetail DisclosureButton //右箭头按钮 今次有响应UITableViewCellAccessoryCheckMark // 对勾
- (void)tableView:(UITableView*)tableView
accessoryButtonTappedForRowWithIndexPath: (NSIndexPath*)indexPath
{
//UIKitPrjCellWithDetail是另外创建的详细画面
UIViewController* viewController = [[UIKitPrjCellWithDetail alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
}
(6)追加自定义附件
UIButton* button = [UIButton buttonWithType:UIButtonTypeInfoDark];
[button addTarget: self action: @selector( ) forControlE
vents: UIControlEventTouchUpInside];
cell.
accessoryView = button;
(7) 追加仅编辑模式下显示的附件
导航条:
self.navigationItem.rightBarButtonItem = [self editButtonItem];
self.tableView.editing = NO;
self.tableView.allowsSelection = NO;
self.tableView.allowsSelectionDuringEditing = YES;
cell.editingAccessoryType = UITableViewCellAccessoryDetailDisclosureButton;
对单元未缩进的问题
- (UITableViewCellEditingStyle)tableView:(UITableView*)tableView
editingStyleForRowAtIndexPath:(NSIndexPath*)indexPath
{ return UITableViewCellEditingStyleNone; }
- (BOOL)tableView:(UITableView*)tableView
shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath*)indexPath
{ return NO; }
(8) 追加控件
switch ( indexPath.section ) {
case 0: //< 向单元中追加UIImageView
[cell.contentView addSubview:[self imageViewForCell:cell withFileName:@"brows.png"]];
break;
case 1: //< 向单元中追加UISwitch
[cell.contentView addSubview:[self switchForCell:cell]];
break;
case 2: //< 向单元中追加UISlider
[cell.
contentView addSubview:[self sliderForCell:cell]];
break;
default:
break;
}
(9)单元背景
self.tableView.backgroundColor = [UIColor clearColor]; //背景色透明
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; //隐藏单元分隔线
UIImage* image = [UIImage imageNamed:@"frame.png"];
UIImage* stretchableImage = [image stretchableImageWithLeftCapWidth:30 topCapHeight:30];
UIImageView* imageView = [[[UIImageView alloc] initWithImage:stretchableImage] autorelease];
cell.
backgroundView = imageView;
**********来自 《20搞定iphone软件开发一书》***********