我正在像这样使用 addTarget:action:forControlEvents:
[newsButton addTarget:self
action:@selector(switchToNewsDetails)
forControlEvents:UIControlEventTouchUpInside];
我想将参数传递给我的选择器“switchToNewsDetails”。 我成功做的唯一一件事是通过编写(id)发件人:
action:@selector(switchToNewsDetails:)
但我正在尝试传递整数值等变量。这样写是行不通的:
int i = 0;
[newsButton addTarget:self
action:@selector(switchToNewsDetails:i)
forControlEvents:UIControlEventTouchUpInside];
这样写也不行:
int i = 0;
[newsButton addTarget:self
action:@selector(switchToNewsDetails:i:)
forControlEvents:UIControlEventTouchUpInside];
任何帮助将不胜感激:)
最佳答案
action:@selector(switchToNewsDetails:)
您不要在此处将参数传递给 switchToNewsDetails:
方法。您只需创建一个选择器以使按钮能够在发生某些操作时调用它(在您的情况下进行修饰)。控件可以使用 3 种类型的选择器来响应 Action ,它们都具有预定义的参数含义:
无参数
action:@selector(switchToNewsDetails)
有1个参数表示发送消息的控件
action:@selector(switchToNewsDetails:)
用2个参数表示发送消息的控件和触发消息的事件:
action:@selector(switchToNewsDetails:event:)
尚不清楚您究竟想做什么,但考虑到您想为每个按钮分配一个特定的详细信息索引,您可以执行以下操作:
在 switchToNewsDetails:
方法中,您可以获得该索引并打开相应的详细信息:
- (void)switchToNewsDetails:(UIButton*)sender{
[self openDetails:sender.tag];
// Or place opening logic right here
}
https://stackoverflow.com/questions/3988485/
相关文章:
objective-c - NSPredicate:按 NSDate 属性的日期过滤对象
objective-c - 如何使用 NSNotificationCenter 传递对象
objective-c - 如何在 iPhone 模拟器中更改时间和时区?
iphone - Storyboard - 引用 AppDelegate 中的 ViewContro
iphone - SplitView 就像 iPhone 上的 Facebook 应用程序
objective-c - 将空格序列折叠成单个字符并修剪字符串
iphone - 使用 Cocoa 和 Objective-C 理解引用计数
objective-c - 为什么 Objective-C 不支持私有(private)方法?