IOS学习之路五(代码实现UITableView)
2013-08-24 11:26 Lves Li 阅读(571) 评论(0) 编辑 收藏 举报先展示一下运行结果:
代码实现:
1.先创建一个空项目:
2.创建一个Controller:(TableViewController)
在AppDelegate.h中声明属性:
- // AppDelegate.h
- // UITableViewDemo
- //
- // Created by WildCat on 13-8-6.
- // Copyright (c) 2013年 wildcat. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- @class TableViewController;
- @interface AppDelegate : UIResponder <UIApplicationDelegate>
- @property (nonatomic,strong) TableViewController *tableViewController;
- @property (strong, nonatomic) UIWindow *window;
- @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
- @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
- @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- - (void)saveContext;
- - (NSURL *)applicationDocumentsDirectory;
- @end
在.m文件中实现:关键代码:
- #import "AppDelegate.h"
- #import "TableViewController.h"
- @implementation AppDelegate
- @synthesize tableViewController=_tableViewController;
- @synthesize managedObjectContext = _managedObjectContext;
- @synthesize managedObjectModel = _managedObjectModel;
- @synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- // Override point for customization after application launch.
- self.window.backgroundColor = [UIColor whiteColor];
- [self.window makeKeyAndVisible];
- self.tableViewController=[[TableViewController alloc] initWithNibName:nil bundle:NULL];
- [self.window addSubview:self.tableViewController.view];
- return YES;
- }
在TableViewController中声明:
- #import <UIKit/UIKit.h>
- @interface TableViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>
- @property (nonatomic, strong) UITableView *myTableView;
- @end
在其.m文件中实现:
- //
- // TableViewController.m
- // UITableViewDemo
- //
- // Created by WildCat on 13-8-6.
- // Copyright (c) 2013年 wildcat. All rights reserved.
- //
- #import "TableViewController.h"
- @interface TableViewController ()
- @end
- @implementation TableViewController
- @synthesize myTableView;
- #pragma mark - 实现UITableViewDelegate的方法
- //当cell被点击时调用该方法
- - (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
- if ([tableView isEqual:self.myTableView]){
- NSLog(@"%@",
- [NSString stringWithFormat:@"Cell %ld in Section %ld is selected",
- (long)indexPath.row, (long)indexPath.section]); }
- }
- - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
- CGFloat result = 20.0f;
- if ([tableView isEqual:self.myTableView]){
- result = 40.0f;
- }
- return result;
- }
- #pragma mark - 实现datasource的方法
- //确定section的个数
- -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
- NSInteger result=0;
- if ([tableView isEqual:self.myTableView]) {
- result=3;
- }
- return result;
- }
- //每个section的行数
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
- NSInteger result = 0;
- if ([tableView isEqual:self.myTableView]){
- switch (section){ case 0:{
- result = 3;
- break;
- } case 1:{
- result = 5; break;
- } case 2:{
- result = 8; break;
- } }
- }
- return result;
- }
- //设置每个静态的cell
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
- UITableViewCell *result = nil;
- if ([tableView isEqual:self.myTableView]){
- static NSString *TableViewCellIdentifier = @"MyCells";
- result = [tableView dequeueReusableCellWithIdentifier:TableViewCellIdentifier];
- if (result == nil){
- result = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:TableViewCellIdentifier];
- }
- result.textLabel.text = [NSString stringWithFormat:@"Section %ld, Cell %ld", (long)indexPath.section,
- (long)indexPath.row];
- // result.backgroundColor=[UIColor greenColor]; //背景色
- result.detailTextLabel.text = @"详细内容";
- if (indexPath.section==0) {
- result.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //设置右边的样式
- }else if(indexPath.section==1){
- result.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; //设置右边的样式
- }else{
- result.accessoryType = UITableViewCellAccessoryCheckmark; //设置右边的样式
- }
- /*
- 这两个附件的区别在于 disclosure indicator 不产生事件,而 detail disclosure 按钮在被点击时会向委托触发一个事件;也就是说,点击 cell 上的按键会 有不同效果。因此,detail disclosure 按钮允许用户在同一行上执行两个独立但相关的操 作。
- */
- // typedef enum {
- // UITableViewCellAccessoryNone, // don't show any accessory view
- // UITableViewCellAccessoryDisclosureIndicator, // regular chevron. doesn't track
- // UITableViewCellAccessoryDetailDisclosureButton, // blue button w/ chevron. tracks
- // UITableViewCellAccessoryCheckmark // checkmark. doesn't track
- // } UITableViewCellAccessoryType;
- }
- return result;
- }
- //实现DetailDisclosure被点击出发的方法
- - (void) tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
- /* Do something when the accessory button is tapped */
- NSLog(@"Accessory button is tapped for cell at index path = %@", indexPath);
- UITableViewCell *ownerCell = [tableView cellForRowAtIndexPath:indexPath];
- NSLog(@"Cell Title = %@", ownerCell.textLabel.text);
- }
- #pragma mark - TableViewController 的方法
- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
- {
- self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
- if (self) {
- // Custom initialization
- }
- return self;
- }
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- self.view.backgroundColor = [UIColor whiteColor];
- self.myTableView =
- [[UITableView alloc] initWithFrame:self.view.bounds
- style:UITableViewStyleGrouped];//另一种样式:UITableViewStyleGrouped
- self.myTableView.dataSource = self;
- self.myTableView.delegate = self;
- self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight;
- [self.view addSubview:self.myTableView];
- }
- - (void)viewDidUnload
- {
- [super viewDidUnload];
- // Release any retained subviews of the main view.
- self.myTableView = nil;
- }
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- {
- return (interfaceOrientation == UIInterfaceOrientationPortrait);
- }
转载请注明:
新浪微博:http://weibo.com/u/3202802157