zoukankan      html  css  js  c++  java
  • IOS学习之路五(代码实现UITableView)

    先展示一下运行结果:





    代码实现:

    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);
    }
    
    @end
    









  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    SpringCloud Alibaba微服务实战一
    Bar:柱状图/条形图
    Pie:饼图
    Gauge:仪表盘
    Funnel:漏斗图
    VSCode+latex引用bibtex参考文献
    因为报表做得太好,我被阎王爷叫走了.....
    ubuntu安装pyCUDA
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3241485.html
Copyright © 2011-2022 走看看