我的iPhone项目中有15个UIButton,点击按钮后弹出一个图像,不同按钮的所有图像都不同?

时间:2013-04-15 12:41:27

标签: ios uiimageview uibutton uitouch

我的iPhone项目中有15个UIButton,点击按钮后弹出一个图像,不同按钮的所有图像都不同,我怎样才能通过触摸实现这一点?

如何为特定按钮调用正确的图像?

我不想要15个UIButton和15个UIImageView。

4 个答案:

答案 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中的图像。

这可能有助于在视图中获取触摸的位置。

UIView touch location coordinates

答案 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;
        }
    }

}