在else if条件下迭代变量?

时间:2011-10-18 04:37:49

标签: iphone objective-c ios ipad if-statement

我正在尝试使用取决于变量对象的条件创建if语句。我怎么能这样做呢?

以下是我要做的事情的要点......

if ([gestureRecognizer state] == UIGestureRecognizerStateEnded)
{       
    if (somecondition)
    {
        //Do stuff
    }
    else if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray**.frame))
    {
        //Do stuff
    }   
}

如何在测试true或false之前获取else if if条件来检查多个UIView帧?

更新代码:

在这种情况下我该怎么做?

if ([gestureRecognizer state] == UIGestureRecognizerStateEnded)
{       
    if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray_1**.frame))
    {
        //Do stuff
    }
    else if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray_2**.frame))
    {
        if (condition) {
            //do stuff
        }
        else if (condition){
            //do something else
        }
    }   
    else if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray_3**.frame))
    {
        if (condition) {
            //do stuff
        }
        else if (condition){
            //do something else
        }
    }   
    else if (CGRectIntersectsRect(currentImage.frame, **anyOfTheImagesInMyArray_4**.frame))
    {
        if (condition) {
            //do stuff
        }
        else if (condition){
            //do something else
        }
    }   
}

2 个答案:

答案 0 :(得分:1)

不确定我的问题是否正确,但是如果您想对阵列中的每个图像执行某些任务,它应该看起来像像这样:

if ([gestureRecognizer state] == UIGestureRecognizerStateEnded)
{
    // imagesArray is an NSArray holding UIImages
    for (UIImage *image in imagesArray) {
        if (CGRectIntersectsRect(currentImage.frame, image.frame)) {
            if (someCondition) {
                // do stuff
            } else {
                // do something else
            }
        }
    }
}

答案 1 :(得分:1)

据我所知,没有办法简洁地用现有的语法来做你想做的事情。相反,请考虑对NSArray进行分类以添加-containsIntersectingRect:(CGRect)rect等方法,该方法循环遍历NSValue个对象数组 - 数组只能包含对象,因此您必须插入{{1}进入包含CGRect个对象的数组 - 并查找NSValue的至少一个正例。

这至少会使语法更多地被收集并抽象为一系列条件的单一方法。