当我按下Xcode上的按钮时,如何从数组循环中取出当前整数值?

时间:2014-02-26 07:27:50

标签: ios objective-c int ibaction

我需要获取mtype的当前值并将其传递给Mselect,以便向前推进的图像与动画中旋转的图像相同。

这是代码示例

- (void)viewDidLoad
{

    //Array to hold  Images
    NSMutableArray *imageArray = [[NSMutableArray alloc] initWithCapacity:Mush_Count];

    for (mtype = 1; mtype < Mush_Count; mtype++)
    {
        [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"Mush%i.png", mtype]]];
        //make button

        SelectBt.imageView.animationImages = [NSArray arrayWithArray:imageArray];
        SelectBt.imageView.animationDuration = 5;
        [SelectBt.imageView startAnimating];

        Mselect = mtype;

    }
}    
-(IBAction)Selection:(id)sender{
    [self Placement];
}

-(void)Placement{
    if (Place1Occ == NO) {
        [self Place1];
    }
}
-(void)Place1{
    if (Place1Occ == NO) {
        Place1.image =[UIImage imageNamed:[NSString stringWithFormat:@"Mush%i.png", Mselect]];
    Place1Occ = YES;
    }
}

动画循环很好并且图像的选择有效,但是它没有选择当前在屏幕上选择阵列上最后一个图像的图像。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

SelectBT是UIButton的子类吗?如果是这样的(身份)发件人来自您的IBAction?

如果是这样,那么您可以通过调用sender.imageView.image直接从SelectBT实例获取图像

顺便说一句,Objective-C约定是将ClassNames大写,但是使用lowerCase启动实例,就像这个ClassName *instanceOfClassName一样,如果你不遵守那个约定,你可能会在这里使用它。 / p>

更新

你可以将imageArray撞到类变量或属性吗?它已经包含了所有满载的UIImages,你可以通过调用[imageArray objectAtIndex:i]

来取回它

然后,您只需跟踪用户面向哪个数字索引,或者他们点击了哪个索引并拉出相应的图像。

如果您希望我们解释更多内容,请随意发表您的全班。

答案 1 :(得分:0)

for (mtype = 1; mtype < Mush_Count; mtype++)
{
    [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"Mush%i.png", mtype]]];
}

该循环足以构建图像数组 - 在此循环完成并填充数组之前,您无需设置imageView的动画图像。 按照目前的情况,您可以在每次循环时重置动画图像,并在每次迭代时将Mselect设置为type:这就是为什么您总是得到Mselect中存储的最后一个图像索引

此代码应位于for循环之后:

    SelectBt.imageView.animationImages = [NSArray arrayWithArray:imageArray];
    SelectBt.imageView.animationDuration = 5;
    [SelectBt.imageView startAnimating];

据我所知,您无法直接获取动画的当前帧 - 您必须在启动动画时创建一个计时器,并计算帧数(通过增加Mselect然后用它来加载当前图像