您的位置:首页 > 产品设计 > UI/UE

IOS学习之路五(代码实现UITableView)

2013-08-24 11:26 555 查看
先展示一下运行结果:



代码实现:

1.先创建一个空项目:

2.创建一个Controller:(TableViewController)

在AppDelegate.h中声明属性:

[cpp] view plaincopyprint?

// 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文件中实现:关键代码:

[cpp] view plaincopyprint?

#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中声明:

[cpp] view plaincopyprint?

#import <UIKit/UIKit.h>

@interface TableViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>

@property (nonatomic, strong) UITableView *myTableView;

@end

在其.m文件中实现:

[cpp] view plaincopyprint?

//

// 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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: