Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 通过UIButton调用函数_Ios_Objective C - Fatal编程技术网

Ios 通过UIButton调用函数

Ios 通过UIButton调用函数,ios,objective-c,Ios,Objective C,我不确定我的代码是否错误,但编译时没有错误 我有一个刷新按钮,用于刷新TableView,下面是以下代码: - (IBAction)refreshButton:(UIButton *)sender { UIButton *refreshButton = [UIButton alloc]; [refreshButton addTarget:self action:@selector(scanBLEDevices:) forControlEvents:UIControlEventTouchUpIns

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

我有一个刷新按钮,用于刷新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:
iAction
方法
刷新按钮:

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

假设您在故事板中正确地附加了动作方法,我建议您将简单的
iAction
方法替换为以下方法:

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

    [self scanBLEDevices:sender];

}
因为你的
扫描设备:
方法需要一个
id
发送者,你可以传递你的按钮(毕竟你在BLE方法中不使用它)

希望这能帮你找到正确的方向。快乐编码


注意:如果您不确定此处何时/何地允许
分配
,我建议您在代码中使用
ui按钮
元素时,阅读一些有关
iAction
的常见做法

您的代码中没有“错误”,正如您所说,它符合要求。这里的“错误”不仅仅是语法,而是上下文

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

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

假设您在故事板中正确地附加了动作方法,我建议您将简单的
iAction
方法替换为以下方法:

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

    [self scanBLEDevices:sender];

}
因为你的
扫描设备:
方法需要一个
id
发送者,你可以传递你的按钮(毕竟你在BLE方法中不使用它)

希望这能帮你找到正确的方向。快乐编码


注意:如果您不确定此处何时/何地允许
分配
,我建议您在代码中使用
ui按钮
元素时,阅读一些有关
iAction
的常见做法


橡皮鸭原则说,如果你不能解释行的作用,那么它就错了。如果你将refreshButton添加到
UIView
层次结构中,按钮会调用动作方法(
iAction
),通常你不会在其中创建任何按钮。是的,第二个包含错误。橡皮鸭原则说,如果你不能解释行的作用,那么它就是错误的。如果你将refreshButton添加到
UIView
层次结构中,一个操作方法(
IBAction
)由一个按钮调用,通常你不会在其中创建任何按钮。是的,第二个包含一个错误。谢谢你的详细回答,非常容易理解和理解!!现在可以工作了,但现在我还有其他错误要修复。。哦,好吧!没问题-很高兴我能帮忙!谢谢你的详细回答,真的很容易理解和遵循!!现在可以工作了,但现在我还有其他错误要修复。。哦,好吧!没问题-很高兴我能帮忙!