iOS UITableView一些基础知识
打开UIViewController.h
//
// RootViewController.h
// Lesson09TableView
//
// Created by Dubai on 14-9-26.
// Copyright (c) 2014年 Dubai All rights reserved.
//
#import <UIKit/UIKit.h>
//遵循一下代理
@interface RootViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
@end
//
// RootViewController.m
// Lesson09TableView
//
// Created by Dubai on 14-9-26.
// Copyright (c) 2014年 Dubai All rights reserved.
//
#import "RootViewController.h"
@interface RootViewController ()
@end
@implementation RootViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:(UITableViewStyleGrouped)];
[self.view addSubview:tableView];
[tableView release];
//属性
tableView.rowHeight = 90;//行高
tableView.separatorColor = [UIColor redColor];//行隔性颜色
//tableView.separatorStyle = UITableViewScrollPositionNone;//分割线 消失
//tableView.separatorStyle = UITableViewScrollPositionBottom;
//tableView.separatorStyle = UITableViewRowAnimationRight;
tableView.dataSource = self;//设置数据源的代理(必须实现)
tableView.delegate = self;//负责控制的代理对象
}
//设置分区,可选实现,因为tableview默认有一个分区(数据源代理)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 4;
}
//设置每个分区的行数,必须实现(数据源)
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 5;
}
//设置每行要显示的内容,每行所在位置会放值一个tabelViewcell,每行要显示的数据,设置在cell上必须实现
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//当某行移出屏幕时,tableView会将这行显示的cell,移动到重用集合中储存,这行就咩有cell显示任何数据.
//因此,只要某行要进入屏幕显示,必须执行这个代理方法.设置这行要显示的cell;
NSLog(@"row= %ld",indexPath.row);
//indexPath包含两个属性 section和 row 即分区和行数
//section 和row 的索引都从0开始.每个分区中的row的索引都是从0开始
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"cell"];
//cell的样式 是用来影响3个视图的位置
//cell.imageView.image = [UIImage imageNamed:@"ha.png"];
//cell.detailTextLabel 直接用 不用创建(不能改变大小)
cell.textLabel.text = [NSString stringWithFormat:@" section:%ld row:%ld",indexPath.section,indexPath.row];//在第几个分区 第几行
cell.detailTextLabel.text = @". . . .";//当是default时不显示(可以修改cell样式 来显示)
//cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;//辅助视图
cell.accessoryType = UITableViewCellAccessoryCheckmark;
//cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
//只让第一行显示checkmark
if (indexPath.row == 0) {
//如果是第一行就显示为checkmark
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}else{
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
// //重用
//
// //先从重用队列中获取可以被重用的cell对象,
//
// static NSString *indentifier = @"cell";//标示
// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:indentifier];
// //如果重用队列中没有可以使用的cell,必须自己创建.
// if (cell == nil) {
// cell = [[[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleSubtitle) reuseIdentifier:indentifier] autorelease];
// NSLog(@"创建的新的cell对象");//只许创建对象
//
//// cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.row];
//
// }
// //重用在这里
// //设置当前要使用的cell,可能放置在任何一行
// cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.row];
// //cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.section];
// cell.detailTextLabel.text = [NSString stringWithFormat:@"nihao"];//显示不显示跟上面的cell创建时的subtitle有关
// return cell;
}
//给每个分区设置头部标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [NSString stringWithFormat:@"%ld",section + 1];
}
//给所有的副标题右侧的.
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
return @[@"1",@"2",@"3"];
}
////设置行高
//- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
//{
// if (indexPath.section == 0) {
// return 20;
// }if (indexPath.section == 1) {
// return 60;
// }if (indexPath.section == 2) {
// return 40;
// }if (indexPath.section == 3) {
// return 100;
// }return 2;
//
//
//}
//
//检测cell被选中的第几个分区第几行
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"分区 %ld,行数:%ld",indexPath.section+1,indexPath.row );
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
如图:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。