博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios仿淘宝管理收货地址demo
阅读量:5888 次
发布时间:2019-06-19

本文共 3268 字,大约阅读时间需要 10 分钟。

在上篇中出现了复用的问题,然后是用数组承接的,现在我换了一种方法

(1)自定义cell.h

@class MyTableViewCell;

 

//创建一个代理

@protocol myTabVdelegate <NSObject>

 

-(void)myTabVClick:(MyTableViewCell *)cell; //因为我要用这个来判定选中的cell

 

@end

 

@interface MyTableViewCell : UITableViewCell

 

//声明一个代码块

@property(strong,nonatomic)void(^btnClick)();

 

@property(strong,nonatomic)UIButton *btn;

 

@property(assign,nonatomic)id<myTabVdelegate>delegate;

@end

(2)cell.m的实现

#import "MyTableViewCell.h"

 

@implementation MyTableViewCell

 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) {

 

        _btn = [UIButton buttonWithType:UIButtonTypeCustom];

        _btn.frame = CGRectMake(10, 10, 100, 30);

        [_btn setTitle:@"test" forState:UIControlStateNormal];

        [_btn setBackgroundColor:[UIColor redColor]];

        

        [_btn addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchUpInside];

        [self addSubview:_btn];

    }

    return self;

}

 

//按钮事件

-(void)test:(UIButton *)sender

{

    

    [self.delegate myTabVClick:self];

    

}

 

- (void)awakeFromNib

{

    // Initialization code

}

 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated

{

    [super setSelected:selected animated:animated];

 

    // Configure the view for the selected state

}

 

@end

 

(3)VC.m的实现

#import "ViewController.h"

#import "MyTableViewCell.h"

@interface ViewController ()

 

@property(nonatomic,strong)NSIndexPath *lastPath;

/*注释*/

@property (nonatomic,strong)MyTableViewCell *myCell;

@end

 

@implementation ViewController

 

- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    

    _tableV = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];

    _tableV.delegate = self;

    _tableV.dataSource = self;

 

    [self.view addSubview:_tableV];

    

}

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return 20;

}

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    

    

    

    static NSString *identify = @"identify";

    MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identify];

    if (!cell) {

        cell = [[MyTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identify];

    }

 

    

    //给代码赋值

    cell.btnClick = ^(){

        NSLog(@"222===%ld",indexPath.row);

    };

    //给代理赋值

    cell.delegate = self;

    

 

    NSInteger row = [indexPath row];

    

    NSInteger oldRow = [_lastPath row];

    

    if (row == oldRow && _lastPath!=nil)

    {

       [cell.btn setTitle:@"你好" forState:UIControlStateNormal];

    }

    else

    {

       [cell.btn setTitle:@"test" forState:UIControlStateNormal];

    }

        

 

    return cell;

}

 

 

//实现代理

-(void)myTabVClick:(MyTableViewCell *)cell

 

{

    NSIndexPath *indexPath = [_tableV indexPathForCell:cell];

    

    NSInteger newRow = [indexPath row];

    NSInteger oldRow = (self .lastPath !=nil)?[self .lastPath row]:-1;

    

    if (newRow != oldRow) {

        

        self.myCell = [_tableV cellForRowAtIndexPath:indexPath];

        

        [self.myCell.btn setTitle:@"你好" forState:UIControlStateNormal];

        

        self.myCell = [_tableV cellForRowAtIndexPath:self .lastPath];

        

        [self.myCell.btn setTitle:@"test" forState:UIControlStateNormal];

        

        self .lastPath = indexPath;

        

    }

 

    

}

 

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

@end

 

转载于:https://www.cnblogs.com/huiyi-520/p/7501226.html

你可能感兴趣的文章
Thinkphp5笔记三:创建基类
查看>>
查询反模式 - GroupBy、HAVING的理解
查看>>
Android中EditText,Button等控件的设置
查看>>
TextKit简单示例
查看>>
网格最短路径算法(Dijkstra & Fast Marching)(转)
查看>>
软链接和硬链接详解
查看>>
Redis_master-slave模式
查看>>
彻底卸载删除微软Win10易升方法
查看>>
SWT/JFACE之环境配置(一)
查看>>
应用程序日志中总是说MS DTC无法正确处理DC 升级/降级事件,是什么意思
查看>>
mybatis数据处理的几种方式
查看>>
作业2
查看>>
远程主机探测技术FAQ集 - 扫描篇
查看>>
C++中调用python函数
查看>>
Nomad添加acl认证
查看>>
“TI门外汉”网路知识笔记一 OSI参考模型
查看>>
你不需要jQuery(五)
查看>>
DatanodeDescriptor说明
查看>>
ServlertContext
查看>>
Python WOL/WakeOnLan/网络唤醒数据包发送工具
查看>>