n.e*_*ind 5 cocoa-touch objective-c uibutton ios
我正在尝试向我以编程方式创建的按钮添加操作:
[btn addTarget:self
action:@selector(indexAction)
forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,我现在想要将一个变量(int k)传递给indexAction方法.我无法让这个工作:
[btn addTarget:self
action:@selector([self indexAction:k])
forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
我确信我做错了什么.这是上面代码的上下文:
-(void) initIndexButtons {
float buttonPadding = -8;
float buttonWidth = 23;
float buttonHeight = 80;
CGRect frame = CGRectMake(0,0,0,0);
for (int k=0;k<5;k++)
{
UIButton* btn = [[UIButton alloc] initWithFrame:frame];; btn.tag = k;
btn.frame = CGRectMake(0, k*(buttonPadding+buttonHeight), buttonWidth, buttonHeight);
UIImage *newImage = [UIImage imageNamed:@"index.png"];
[btn setBackgroundImage:newImage forState:UIControlStateNormal];
[btn addTarget:self
action:@selector(self indexAction:k)
forControlEvents:UIControlEventTouchUpInside];
}
}
-(void)indexAction:(int *)buttonTag
{
NSLog(@"buttonTag: %i", buttonTag);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我将代码更改为:
// ...
[btn addTarget:self
action:@selector(indexAction:)
forControlEvents:UIControlEventTouchUpInside];
//[self indexAction:k];
[indexView addSubview:btn];
[indexView sendSubviewToBack:btn];
}
}
-(void)indexAction:(id)sender
{
NSInteger *tid = ((UIControl *) sender).tag;
NSLog(@"buttonTag: %i", tid);
}
Run Code Online (Sandbox Code Playgroud)
但是现在我收到一条警告信息:"初始化从整数开始生成指针而没有为该行强制转换 NSInteger *tid = ((UIControl *) sender).tag;
编辑:
这是正确的代码行:
NSInteger tid = ((UIControl*)sender).tag;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5065 次 |
| 最近记录: |