我的iPhone项目中有15个UIButton,点击按钮后弹出一个图像,不同按钮的所有图像都不同,我怎样才能通过触摸实现这一点?
如何为特定按钮调用正确的图像?
我不想要15个UIButton和15个UIImageView。
答案 0 :(得分:0)
您可以将所有15个按钮连接到一个" IBAction
"方法
调用方法时,发送的参数(例如" (id) sender
")是发送消息的对象。
如果为每个按钮分配不同的标签,您将知道哪个按钮称为操作方法,然后您可以为每个不同的按钮显示不同的图像。
这里所需要的只是一个" IBAction
"方法和一个" IBOutlet
"对于单个图像视图。但是,您仍然需要使用某种逻辑将15个不同的图像加载到单个图像视图中。
答案 1 :(得分:0)
以下是您可以做的事情: 在单击任何按钮后调用此方法:
-(IBAction)buttonClicked:(UIButton *)sender {
if(sender.tag == 0){
NSLog(@"Button one");
} else if(sender.tag == 1){
NSLog(@"Button two"); ... // like wise do it for 15 buttons
}
}
您需要做的就是在创建按钮时为该按钮添加标签。 我认为你必须运行一次for循环15次才能创建这些按钮, 所以:
for(i=0;i<15;i++){
//create button..
button.tag = i;
}
答案 2 :(得分:0)
使用所有15个按钮信息获得视图的背景图像,该信息被划分为15个位置以检测触摸。 获取触摸位置(坐标)并根据预定义的特定位置,相应地更新弹出UIImageView中的图像。
这可能有助于在视图中获取触摸的位置。
答案 3 :(得分:0)
您可以使用IBOutletCollections,这需要您在Xib中连接15个UIButtons。 以下代码假定您有一组N按钮。对于给定的手势,它将迭代集合中的按钮并确定触摸的位置是否在按钮框内。
编辑:IBOutletCollections在iOS 4及更高版本中可用。
假设您具有以下属性:
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *collection_buttons;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
以下综合:
@synthesize collection_buttons = _collection_buttons, imageView = _imageView;
然后你可以在回调手势时使用以下代码。
-(IBAction) tapGestureOnButton:(UITapGestureRecognizer *) gesture {
CGPoint point = [gesture locationInView:self.view_buttonContainer];
for( int index = 0; index < self.collection_buttons.count; index++ ) {
if( CGRectContainsPoint(((UIButton *)[_collection_buttons objectAtIndex:index]).frame, point)) {
//Button at index has been pressed
[imageView setImage:[button backgroundImageForState:UIControlStateNormal]];
break;
}
}
}