场景:
在tableView的Cell中有一个button,我需要点击这个button然后使得其视图控制器上的一个视图改变frame,但是我点击这个button后,导致卡死,也不崩溃,所有事件失效,我本人初步认为是线程卡死,或者事件全部传递到了我需要改变frame的那个视图上,无法分发事件。
解决:
1.使用Block解决,或者其他设计模式来传递点击消息;
2.使用多线程解决,最高效快捷;
示例:
我使用的是Block解决:
在tableView中声明Block
因为我需要传值,所以带有参数
typedef void(^btnBlock)(ModelDiscussionList *);
@property (nonatomic,copy) btnBlock block;
我在tableView构建Cell的协议方法中,在此处添加button点击事件,并根据indexPath.row来设置button的tag值,以此来获取数据
//实现Block,并且实现传值 -(void)outLaftView:(UIButton *)button { ModelDiscussionList *model = _dataArray[button.tag]; _block(model); }
在视图控制器初始化tableView的时候调用Block
//调用Block _commentStuTableView.block = ^(ModelDiscussionList *model) { //在里面实现改变视图frame的方法 };
我就是这样解决这个问题的
时间: 2024-11-06 12:25:33