通过UIButton调用函数

时间:2018-02-11 13:53:21

标签: ios objective-c

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

我有一个刷新按钮,用于刷新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];

1 个答案:

答案 0 :(得分:2)

没有"错误"在你的代码中,就像你说的那样,它符合你的要求。 "错误"这不仅仅是语法,它的背景。

  

如果您希望按钮触发并执行扫描,   那么你应该在你的方法中调用你的方法scanBLEDevices:   IBAction方法refreshButton:

在您的代码段中,通过在刷新按钮方法中创建 new UIButton,您只需将动作分配给尚未初始化的按钮,和< / em>没有提供触发按钮的机会(它在此方法中创建并仅存在 )。

假设您已在故事板中正确附加了操作方法,我建议您使用以下内容替换简单的IBAction方法:

- (IBAction)refreshButton:(UIButton *)sender {

    [self scanBLEDevices:sender];

}

由于您的scanBLEDevices:方法需要id发件人,因此您可以传递按钮(因为毕竟您不能在BLE方法中使用它),远离lol)。

希望这可以帮助您指明正确的方向。快乐的编码!

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

UIButton - UIKit | Apple Developer Documentation