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

来源:互联网 发布:淘宝试用成功后要钱吗 编辑:程序博客网 时间:2024/05/20 11:52

先展示一下运行结果:





代码实现:

1.先创建一个空项目:

2.创建一个Controller:(TableViewController)

在AppDelegate.h中声明属性:

[cpp] view plaincopyprint?
  1. //  AppDelegate.h  
  2. //  UITableViewDemo  
  3. //  
  4. //  Created by WildCat on 13-8-6.  
  5. //  Copyright (c) 2013年 wildcat. All rights reserved.  
  6. //  
  7.   
  8. #import <UIKit/UIKit.h>  
  9. @class TableViewController;  
  10. @interface AppDelegate : UIResponder <UIApplicationDelegate>  
  11. @property (nonatomic,strong) TableViewController *tableViewController;  
  12. @property (strong, nonatomic) UIWindow *window;  
  13.   
  14. @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;  
  15. @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;  
  16. @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;  
  17.   
  18. - (void)saveContext;  
  19. - (NSURL *)applicationDocumentsDirectory;  
  20.   
  21. @end  


在.m文件中实现:关键代码:

[cpp] view plaincopyprint?
  1. #import "AppDelegate.h"  
  2. #import "TableViewController.h"  
  3. @implementation AppDelegate  
  4. @synthesize tableViewController=_tableViewController;  
  5. @synthesize managedObjectContext = _managedObjectContext;  
  6. @synthesize managedObjectModel = _managedObjectModel;  
  7. @synthesize persistentStoreCoordinator = _persistentStoreCoordinator;  
  8.   
  9. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  10. {  
  11.     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  12.     // Override point for customization after application launch.  
  13.     self.window.backgroundColor = [UIColor whiteColor];  
  14.     [self.window makeKeyAndVisible];  
  15.       
  16.     self.tableViewController=[[TableViewController alloc] initWithNibName:nil bundle:NULL];  
  17.     [self.window addSubview:self.tableViewController.view];  
  18.       
  19.       
  20.       
  21.       
  22.     return YES;  
  23. }  


在TableViewController中声明:

[cpp] view plaincopyprint?
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface TableViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>  
  4. @property (nonatomic, strong) UITableView *myTableView;  
  5. @end  



在其.m文件中实现:

[cpp] view plaincopyprint?
  1. //  
  2. //  TableViewController.m  
  3. //  UITableViewDemo  
  4. //  
  5. //  Created by WildCat on 13-8-6.  
  6. //  Copyright (c) 2013年 wildcat. All rights reserved.  
  7. //  
  8.   
  9. #import "TableViewController.h"  
  10.   
  11. @interface TableViewController ()  
  12.   
  13. @end  
  14.   
  15. @implementation TableViewController  
  16. @synthesize myTableView;  
  17.   
  18. #pragma  mark - 实现UITableViewDelegate的方法  
  19.   
  20. //当cell被点击时调用该方法  
  21. - (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
  22.     if ([tableView isEqual:self.myTableView]){  
  23.         NSLog(@"%@",  
  24.               [NSString stringWithFormat:@"Cell %ld in Section %ld is selected",  
  25.                (long)indexPath.row, (long)indexPath.section]); }  
  26. }  
  27.   
  28.   
  29.   
  30. - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{  
  31.     CGFloat result = 20.0f;  
  32.     if ([tableView isEqual:self.myTableView]){  
  33.         result = 40.0f;  
  34.     }  
  35.     return result;  
  36. }  
  37. #pragma mark - 实现datasource的方法  
  38. //确定section的个数  
  39. -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{  
  40.     NSInteger result=0;  
  41.     if ([tableView isEqual:self.myTableView]) {  
  42.         result=3;  
  43.     }  
  44.     return result;  
  45.   
  46.   
  47. }  
  48. //每个section的行数  
  49. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{  
  50.     NSInteger result = 0;  
  51.     if ([tableView isEqual:self.myTableView]){  
  52.         switch (section){ case 0:{  
  53.             result = 3;  
  54.             break;  
  55.         } case 1:{  
  56.             result = 5; break;  
  57.         } case 2:{  
  58.             result = 8; break;  
  59.         } }  
  60.     }  
  61.     return result;  
  62. }  
  63.   
  64. //设置每个静态的cell  
  65. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{  
  66.     UITableViewCell *result = nil;  
  67.     if ([tableView isEqual:self.myTableView]){  
  68.         static NSString *TableViewCellIdentifier = @"MyCells";  
  69.         result = [tableView dequeueReusableCellWithIdentifier:TableViewCellIdentifier];  
  70.         if (result == nil){  
  71.             result = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:TableViewCellIdentifier];  
  72.         }  
  73.         result.textLabel.text = [NSString stringWithFormat:@"Section %ld, Cell %ld", (long)indexPath.section,  
  74.                                  (long)indexPath.row];  
  75.        // result.backgroundColor=[UIColor greenColor];  //背景色  
  76.           
  77.        result.detailTextLabel.text = @"详细内容";  
  78.         if (indexPath.section==0) {  
  79.             result.accessoryType = UITableViewCellAccessoryDisclosureIndicator;  //设置右边的样式  
  80.   
  81.         }else if(indexPath.section==1){  
  82.              result.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;  //设置右边的样式  
  83.         }else{  
  84.             result.accessoryType = UITableViewCellAccessoryCheckmark;  //设置右边的样式  
  85.         }  
  86.         /* 
  87.          这两个附件的区别在于 disclosure indicator 不产生事件,而 detail disclosure 按钮在被点击时会向委托触发一个事件;也就是说,点击 cell 上的按键会 有不同效果。因此,detail disclosure 按钮允许用户在同一行上执行两个独立但相关的操 作。 
  88.           
  89.           
  90.          */  
  91.                 
  92. //        typedef enum {  
  93. //            UITableViewCellAccessoryNone,                   // don't show any accessory view  
  94. //            UITableViewCellAccessoryDisclosureIndicator,    // regular chevron. doesn't track  
  95. //            UITableViewCellAccessoryDetailDisclosureButton, // blue button w/ chevron. tracks  
  96. //            UITableViewCellAccessoryCheckmark               // checkmark. doesn't track  
  97. //        } UITableViewCellAccessoryType;  
  98.           
  99.     }  
  100.     return result;   
  101.   
  102. }  
  103. //实现DetailDisclosure被点击出发的方法  
  104. - (void) tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{  
  105.     /* Do something when the accessory button is tapped */  
  106.     NSLog(@"Accessory button is tapped for cell at index path = %@", indexPath);  
  107.     UITableViewCell *ownerCell = [tableView cellForRowAtIndexPath:indexPath];  
  108.     NSLog(@"Cell Title = %@", ownerCell.textLabel.text);  
  109. }  
  110.   
  111.   
  112. #pragma mark - TableViewController 的方法  
  113. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  
  114. {  
  115.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
  116.     if (self) {  
  117.         // Custom initialization  
  118.     }  
  119.     return self;  
  120. }  
  121.   
  122. - (void)viewDidLoad  
  123. {  
  124.     [super viewDidLoad];  
  125.     self.view.backgroundColor = [UIColor whiteColor];  
  126.     self.myTableView =  
  127.     [[UITableView alloc] initWithFrame:self.view.bounds  
  128.                                  style:UITableViewStyleGrouped];//另一种样式:UITableViewStyleGrouped  
  129.     self.myTableView.dataSource = self;  
  130.     self.myTableView.delegate = self;  
  131.     self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight;  
  132.       
  133.     [self.view addSubview:self.myTableView];  
  134.       
  135.       
  136. }  
  137.   
  138. - (void)viewDidUnload  
  139. {  
  140.     [super viewDidUnload];  
  141.     // Release any retained subviews of the main view.  
  142.     self.myTableView = nil;  
  143. }  
  144.   
  145. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
  146. {  
  147.     return (interfaceOrientation == UIInterfaceOrientationPortrait);  
  148. }  
  149.   
  150. @end  
0 0
原创粉丝点击