这看起来真的很奇怪,所以我怀疑这是不是一个好习惯,但我正在开发一个旧应用程序,我需要进行一些更新而不是完全重新设计整个应用程序。
目前,我有一个 UIButton,它有一个 outlet
- (IBAction) toggleBroadcast:(UIButton*) sender
{
// configure and start video capture
}
但我正在尝试实现远程配置,它使用设备 ID 调用 php 脚本并返回一个(解析为 JSON 的)NSDictionary,它被加载到一个静态配置类中。
由于网络需要异步委托(delegate)方法和我的
//配置并开始视频捕获
代码依赖于网络检索数据,我必须让我的 toggleBroadcast 函数看起来像:
- (IBAction) toggleBroadcast:(UIButton*) sender
{
// get identifier, fill request...
// NSURLConnection* connection = [NSURLConnection connectionWithRequest:request
delegate:self];
}
和 connectionDidFinishLoading
委托(delegate)方法然后调用我原来的 toggleBroadcast
代码,现在单独封装以便在适当的时候调用它。
但是!我需要那个 sender
。
那么我怎样才能将 sender
作为参数发送到我的委托(delegate)方法,这样我就可以将它发送到我的新
- (void) originalToggleBroadcastCode:(UIButton*) sender
?
最佳答案
你可以使用非常好的 BlocksKit library这将允许你做:
- (IBAction) toggleBroadcast:(UIButton*) sender
{
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request];
connection.successBlock = ^(NSURLConnection *connection, NSURLResponse *response, NSData *responseData){
[self originalToggleBroadcastCode:sender];
[connection start];
};
关于ios - 如何将参数传递给委托(delegate)回调方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16652302/