我想在按下指定方法时传递一个uibutton的标记,但是当我尝试这个时,我会收到一条错误消息。请帮忙。 代码:
UIButton *deleteButton = [[UIButton alloc]initWithFrame:CGRectMake(230, dateLabel.frame.origin.y, 70, 27)];
[deleteButton addTarget:self action:@selector(deleteButtonPressed:i) forControlEvents:UIControlEventTouchDown];
[deleteButton setBackgroundImage:[UIImage imageNamed:@"delete.jpg"] forState:UIControlStateNormal];
[deleteButton setTag:i];
然后
-(void)deleteButtonPressed:(int)tag
{
NSLog(@"Button Pressed");
NSLog(@"%i", tag);
}
答案 0 :(得分:1)
事件处理程序不会自行传递标记,它们会传递整个按钮:
UIButton *deleteButton = [[UIButton alloc]initWithFrame:CGRectMake(230, dateLabel.frame.origin.y, 70, 27)];
[deleteButton addTarget:self action:@selector(deleteButtonPressed:) forControlEvents:UIControlEventTouchDown];
[deleteButton setBackgroundImage:[UIImage imageNamed:@"delete.jpg"] forState:UIControlStateNormal];
[deleteButton setTag:i];
现在你可以从传入的按钮中获取标签,如下所示:
-(void)deleteButtonPressed:(UIButton*)button {
NSLog(@"Button Pressed, tag=%i", button.tag);
}
答案 1 :(得分:0)
您无法在@selector中传递参数。那应该是@selector(deleteButtonPressed :)。
然后在动作方法中:
-(void)deleteButtonPressed:(UIButton *) sender
{
NSLog(@"Button Pressed");
NSLog(@"%d", sender.tag);
}