通过 UIButton 调用函数



我不确定我的代码是否错误,但是编译时没有错误。

我有一个刷新按钮,它可以刷新 TableView,下面是以下代码:

- (IBAction)refreshButton:(UIButton *)sender {
UIButton *refreshButton = [UIButton alloc];
[refreshButton addTarget:self action:@selector(scanBLEDevices:) forControlEvents:UIControlEventTouchUpInside]; }
- (void)scanBLEDevices:(id)sender {
[manager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:BLEService]] options:nil];
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(stopScan:) userInfo:nil repeats:NO];}

此代码中是否有任何错误?我不确定这第二行,是否允许:

UIButton *refreshButton = [UIButton alloc];

你的代码中没有"错误",就像你说的,它符合。这里的"错误"不仅仅是语法,而是上下文。

如果您希望按钮触发并执行扫描, 然后你应该在你的内部调用你的方法scanBLEDevices:IBAction方法refreshButton:.

在您的代码段中,通过在刷新按钮方法中创建新UIButton,您只是将操作分配给尚未初始化的按钮,并且不提供触发按钮的机会(它是创建的并且存在于此方法中)。

假设您已在情节提要中正确附加操作方法,我建议将简单的IBAction方法替换为以下内容:

- (IBAction)refreshButton:(UIButton *)sender {
[self scanBLEDevices:sender];
}

因为您的scanBLEDevices:方法需要id发送器,所以您可以传递按钮(因为毕竟您不会在BLE方法中使用它,哈哈)。

希望这应该有助于为您指明正确的方向。祝您编码愉快!


注意:如果您不确定何时/何地允许allocation,我建议您在代码中使用UIButton元素时阅读有关IBAction、目标和发送者的一些常见做法。

UIButton - UIKit |苹果开发者文档

最新更新