iOS TableView按钮点击无响应 如何通过代码替代Storyboard添加点击事件
代码添加点击事件实现方式
完全可以通过代码直接给按钮添加点击事件,逻辑和JS的onclick类似,比Storyboard绑定可控性更高,不会出现偶发的绑定失效问题:
- 首先给按钮关联IBOutlet(如果是Storyboard/Xib创建的按钮),或者直接拿到代码创建的按钮实例:
@IBOutlet weak var watchHistoryButton: UIButton!
- 在合适的生命周期(比如
viewDidLoad)给按钮添加点击事件监听:
// Swift 写法 watchHistoryButton.addTarget(self, action: #selector(openWatchHistory), for: .touchUpInside)
如果是Objective-C写法如下:
// OC 写法 [self.watchHistoryButton addTarget:self action:@selector(openWatchHistory) forControlEvents:UIControlEventTouchUpInside];
- 实现点击触发的跳转方法:
@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
相关产品推荐
相关产品推荐

