点击cell中的评论按钮,弹出评论界面

本文介绍如何在SwiftUI中实现按钮点击响应,并通过代理模式通知外部控制器进行相应的操作。文章详细展示了如何定义代理协议、配置代理以及响应按钮点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先在cell.h文件中制定协议,在属性中声明:

#import <UIKit/UIKit.h>
@class AHUTopic;

// 制定协议:
@protocol TermCellDelegate <NSObject>

- (void)choseTerm:(UIButton *)button;

@end

@interface AHUTopicCell : UITableViewCell
//帖子模型数据
@property (nonatomic, strong) AHUTopic *topic;
@property (nonatomic, strong) UITableView *tableView;
@property (assign, nonatomic) id<TermCellDelegate> delegate;//这个是代理属性

@end

在cell.m文件中

@interface AHUTopicCell()

- (IBAction)clickComment:(id)sender;

@end

- (IBAction)clickComment:(id)sender {
     [_delegate choseTerm:sender];//这里是代理调用的方法
}

在topicViewController.m中首先声明代理

@interface AHUTopicViewController () <TermCellDelegate>
@end

重用cell的时候记得设置cell的代理

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    AHUTopicCell *cell = [tableView dequeueReusableCellWithIdentifier:AHUTopicCellId];
    cell.topic = self.topics[indexPath.row];
    cell.delegate = self;
    return cell;
}

编写代理方法

#pragma mark - <TermCellDelegate>代理
//点击评论按钮
- (void)choseTerm:(UIButton *)button
{
    UIView *view1 = [button superview]; //UIView
    UIView *view2 = [[view1 superview] superview]; //AHUTopicCell
    UIView *view3 = [[view2 superview] superview]; //UITableView
    self.tableView = (UITableView *)view3;
    NSIndexPath *indexPath = [self.tableView indexPathForCell:(AHUTopicCell *)view2];
    [self tableView:self.tableView didSelectRowAtIndexPath:indexPath];
}

 

转载于:https://www.cnblogs.com/zkc-note/p/6606251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值