You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS TableView按钮点击无响应 如何通过代码替代Storyboard添加点击事件

代码添加点击事件实现方式

完全可以通过代码直接给按钮添加点击事件,逻辑和JS的onclick类似,比Storyboard绑定可控性更高,不会出现偶发的绑定失效问题:

  1. 首先给按钮关联IBOutlet(如果是Storyboard/Xib创建的按钮),或者直接拿到代码创建的按钮实例:
@IBOutlet weak var watchHistoryButton: UIButton!
  1. 在合适的生命周期(比如viewDidLoad)给按钮添加点击事件监听:
// Swift 写法
watchHistoryButton.addTarget(self, action: #selector(openWatchHistory), for: .touchUpInside)

如果是Objective-C写法如下:

// OC 写法
[self.watchHistoryButton addTarget:self action:@selector(openWatchHistory) forControlEvents:UIControlEventTouchUpInside];
  1. 实现点击触发的跳转方法:
@objc func openWatchHistory() {
    // 替换为你自己的观看历史视图控制器初始化逻辑
    let historyVC = WatchHistoryViewController()
    // 导航栏 push 跳转
    navigationController?.pushViewController(historyVC, animated: true)
    // 如果需要模态弹出替换为:present(historyVC, animated: true)
}

OC对应实现:

- (void)openWatchHistory {
    WatchHistoryViewController *historyVC = [[WatchHistoryViewController alloc] init];
    [self.navigationController pushViewController:historyVC animated:YES];
}

原有问题原因说明

你碰到的TableView刷新后按钮无响应的问题,大概率是reloadData时footer视图被重建,Storyboard绑定的Action关联断开导致的。如果你的footer是在tableView:viewForFooterInSection:代理方法中动态创建的,只需要在该方法里完成按钮实例创建后,直接调用上面的addTarget方法绑定事件,就能彻底解决刷新后点击失效的问题。

内容的提问来源于stack exchange,提问作者mistert69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:54:02