• iOS UITableView


    Row  Section  Cell   Cell重用
    Row  行   Section  组/区    从0开始
    Cell  显示内容  表视图的每⼀一条数据都是显⽰示在UITableViewCell对象中,继承一UIView
    Cell重用机制  重用池放置闲置Cell  先从重用池里区,有 直接哪里用  ;没有 就alloc
     // queue:队列  reusable:重用  identifier:标识符
    UIScrollView 是所有滚动视图的基类
    系统的单例 
    UIScreen 是单例  AppDelegate 单例 
    NSUserDefaults是单例    UIApplication
     
    //- (NSInteger)tableView    快速找到方法
    //- (UITableViewCell *)ta     快速找到方法
     
     
    //  AppDelegate.m
    //  UI09_UITableView
    //
    //  Created by dllo on 15/10/21.
    //  Copyright (c) 2015年 z_han. All rights reserved.
    //

    #import "AppDelegate.h"
    #import "RootViewController.h"
    @interface AppDelegate ()

    @end

    @implementation AppDelegate

    - (void)dealloc
    {
        [_window release];
        [super dealloc];
    }

    - (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];
       
        RootViewController *rootVC = [[RootViewController alloc]init];
        UINavigationController *naviC = [[UINavigationController alloc]initWithRootViewController:rootVC];
        self.window.rootViewController = naviC;
       [rootVC release];
        [naviC release];
        [_window release];
        return YES;
    }
    ---------------------------------------------------------
    //  RootViewController.m
    //  UI09_UITableView

    #import "RootViewController.h"
    #import "FirstViewController.h"
    @interface RootViewController ()<UITableViewDelegate,UITableViewDataSource>

    @end

    @implementation RootViewController

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        self.view.backgroundColor = [UIColor orangeColor];
       
        UITableView *myTableView = [[UITableView alloc]initWithFrame:[[UIScreen mainScreen]bounds] style:UITableViewStylePlain];// 分行的
    //    UITableViewStyleGrouped 分组的
        myTableView.backgroundColor = [UIColor whiteColor];
        [self.view addSubview:myTableView];
        [myTableView release];
       
        myTableView.delegate = self;// 基本配置代理
        myTableView.dataSource = self;// 数据源代理
       
        // 去掉cell的线
        myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
     
       UIView *headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 375, 200)];
        headerView.backgroundColor = [UIColor colorWithRed:1.000 green:0.252 blue:0.457 alpha:1.000];
        // 设置tableView的表头视图
        myTableView.tableHeaderView = headerView;
        [headerView release];
       
    //    [self setAutomaticallyAdjustsScrollViewInsets:NO];
       
        // 刷新整个tableview
        [myTableView reloadData];
        // 刷新指定的cell
    //    [myTableView reloadRowsAtIndexPaths:<#(NSArray *)#> withRowAnimation:<#(UITableViewRowAnimation)#>]
     
    }
     
    // 设置cell行高
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        return 100;
    }
     
    // 设置Section的个数 区的个数
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
        return 3;
    }
     
    // 设置每个Section的行数
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
        if (section == 0) {
            return 2;
        }
        if (section == 1) {
            return 3;
        }
        if (section == 2) {
            return 4;
        }
        return 5;
    }
    //
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
            //1. 先从重用池里取
        // queue:队列  reusable:重用  identifier:标识符
        // 标识符是区别不同Cell的唯一标记
        static NSString *cellIdentifier = @"cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
            //2. Cell是否为空,为空则alloc
    //    if (!cell)
        if (cell == nil) {// 对象可以直接==
    //        Cell是否为空,为空则创建
    //        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];// style  类型  自己试试
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];// 副标题
           
        }
        //**  注意执行顺序  重用机制  显示最后的代码
        NSString *string = [NSString stringWithFormat:@"section = %ld,row = %ld",indexPath.section,indexPath.row];
        cell.textLabel.text = string;
        if ((indexPath.section == 1) && (indexPath.row == 2)) {
            cell.textLabel.text = @"第三步";
        }
        /*  if (indexPath.section == 0) {
            if (indexPath.row == 0) {
                cell.textLabel.text = @"section.0 row.0";
            }
            if (indexPath.row == 1) {
                cell.textLabel.text = @"section.0 row.1";
            }
        }
       
        if (indexPath.section == 1) {
            if (indexPath.row == 0) {
                cell.textLabel.text = @"section.1 row.0";
            }
            if (indexPath.row == 1) {
                cell.textLabel.text = @"section.1 row.1";
            }
            if (indexPath.row == 2) {
                cell.textLabel.text = @"section.1 row.2";
            }

        }
       
        if (indexPath.section == 2) {
            if (indexPath.row == 0) {
                cell.textLabel.text = @"hahahaha";
            }
            if (indexPath.row == 1) {
                cell.textLabel.text = @"hihihihi";
            }
            if (indexPath.row == 2) {
                cell.textLabel.text = @"hehehehe";
            }
            if (indexPath.row == 3) {
                cell.textLabel.text = @"kekekeke";
            }
        }*/
        // 副标题
        cell.detailTextLabel.text = @"副标题";
        //设置cell显示图片
        cell.imageView.image = [UIImage imageNamed:@""];
        // 取消cell的置灰效果
    //    cell.selectionStyle = UITableViewCellSelectionStyleNone;
       
      //
        return cell;
    }
    // 设置字母检索
    - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
        return [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", nil];
    }

    // 设置Section表头标题
    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
        if (section == 0) {
            return @"A";
        }
        if (section == 1) {
            return @"B";
        }
        if (section == 2) {
            return @"C";
        }
        return @"D";
    }
    // 选中cell触发的方法
    // didDeselectRowAtIndexPath 选中的时候不触发,选中下一个cell时触发
    // didSelectRowAtIndexPath 选中cell时触发
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
       
        // 选中的时候有置灰效果,离开时消失选中效果
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
       
        // 自定义cell下标位置路径
        NSIndexPath *indexPt = [NSIndexPath indexPathForRow:2 inSection:2];
        // 滚动到某一行cell
        [tableView scrollToRowAtIndexPath:indexPt atScrollPosition:UITableViewScrollPositionBottom animated:YES];
          
        NSLog(@"section = %ld row = %ld",indexPath.section, indexPath.row);
        FirstViewController *firstVC = [[FirstViewController alloc]init];
        NSString *string1 = [NSString stringWithFormat:@"section = %ld,row = %ld",indexPath.section,indexPath.row];
        firstVC.string = string1;
    //     firstVC.indexPath = self.indexPath;
    //    [self.navigationController pushViewController: firstVC animated:YES];
        [firstVC release];
       
    }
    //- (NSInteger)tableView    快速找到方法
    //- (UITableViewCell *)ta     快速找到方法

    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
       
    }
    @end
    -=========———=========—=——————=-=====-=
    //  FirstViewController.h
    //  UI09_UITableView
    //
    //  Created by dllo on 15/10/21.
    //  Copyright (c) 2015年 z_han. All rights reserved.
    //

    #import <UIKit/UIKit.h>

    @interface FirstViewController : UIViewController

    @property (nonatomic,retain)NSString *string;

    //@property (nonatomic, retain)NSInteger indexPath;
    @end
    =-----------------------------------------
    //  FirstViewController.m
    //  UI09_UITableView
     

    #import "FirstViewController.h"

    @interface FirstViewController ()

    @end

    @implementation FirstViewController

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        self.view.backgroundColor = [UIColor colorWithRed:1.000 green:0.853 blue:0.000 alpha:1.000];
       
       
        self.navigationItem.title = self.string;
       
    //    self.title = [NSString stringWithFormat:@"%d %d",self.indexPath.section, self.indexPath.row];
       
    }

    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    @end
    UI09_UITableViewUI09_UITableView
  • 相关阅读:
    C# 谈谈代码重构
    收藏.NET 技术社区
    步步为营 .NET三层架构解析 四、Model设计(四种设计方式)
    C# 谈谈abstract用法 和一个简单abstract factory
    步步为营 .NET三层架构解析 一、什么是三层架构
    用户登陆的验证码的制作
    控制部分字体的颜色
    回发或回调参数无效。在配置中使用 <pages enableEventValidation= "true "/> 或在页面中使用 <%@ Page EnableEventValidation= "true " %> 启用了事件验证
    实习记2
    sniffer攻击
  • 原文地址:https://www.cnblogs.com/z-han49888/p/4942207.html
Copyright © 2020-2023  润新知