zoukankan      html  css  js  c++  java
  • 应用程序之Xib自定义Cell

    • 效果展示
    • 结构分析
    • 代码实现

    一、效果展示

    二、结构分析

    1⃣️首先我们让我们的控制器不再继承UIViewController,而是继承UITableViewController。这样就直接遵守了delegate协议、dataSource协议

    2⃣️数据使用模型来加载

    3⃣️自定义的Cell使用单独的类来管理

    三、代码实现

    //
    //  BookController.m
    //  01-自定义cell04
    //
    //  Created by apple on 14-4-9.
    //  Copyright (c) 2014年 apple. All rights reserved.
    //
    
    #import "BookController.h"
    #import "Book.h"
    #import "BookCell.h"
    
    @interface BookController ()
    {
        NSMutableArray *books;
    }
    @end
    
    @implementation BookController
    
    - (id)initWithStyle:(UITableViewStyle)style
    {
        self = [super initWithStyle:style];
        if (self) {
            // Custom initialization
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        books = [NSMutableArray array];
        for (int i = 0; i<20; i++) {
            Book *b = [Book bookWithName:[NSString stringWithFormat:@"iOS开发%d", i] price:arc4random_uniform(200)/10.0 + 10];
            [books addObject:b];
        }
    
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return books.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        //加载的cell就是xib对应的BookCell对象
        BookCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
        if (cell == nil) {
            cell = [[[NSBundle mainBundle] loadNibNamed:@"BookCell" owner:nil options:nil] lastObject];
            
        }
        
        Book *book = books[indexPath.row];
        cell.nameLabel.text = book.name;
        cell.priceLable.text = [NSString stringWithFormat:@"¥%.1f", book.price];
        
        UIButton *collect = cell.collectBtn;
        [collect addTarget:self action:@selector(collectClick: event:) forControlEvents:UIControlEventTouchUpInside];
        
        return cell;
    }
    
    - (void)collectClick:(UIButton*)btn event:(UIEvent*)event
    {
        
        //NSLog(@"----%@", event);
        UITableView *tableView = (UITableView *)self.view;
        
        // 获取所有的触摸点(UITouch对象,如果是单点触碰,就只有1个UITouch)
        NSSet *touches = [event allTouches];
        
        // 一个UITouch对象对应一根手指
        UITouch *touch = [touches anyObject];
        
        // 获取触摸点在UITableView上面的的位置
        CGPoint position = [touch locationInView:tableView];
        
        // 根据触摸位置 得到 对应的行号
        NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:position];
        //NSLog(@"%d", indexPath.row);
        
        Book *book = books[indexPath.row];
        NSLog(@"%@", book.name);
    }
    
    #pragma mark - Table view delegate
    
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return 70;
    }
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        //取消选中蓝色
        [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
    }
    
    @end
  • 相关阅读:
    运算符优先级口诀
    [转] 从最大似然到EM算法浅解
    推荐系统实践整体化总结
    Python-函数
    Python-dict/set
    Python-条件、循环、
    Python-list and tuple
    优先级顺序表
    8.1python类型注解
    9.redis-CacheCloud
  • 原文地址:https://www.cnblogs.com/letougaozao/p/3654404.html
Copyright © 2011-2022 走看看