0

在进入下一个视图之前,我需要检查几个受控部分,确保所有部分都已被点击。

到目前为止,我有这个:

-(void)checkAllSegments
{   BOOL alertShown;
    alertShown = NO;
    for (UISegmentedControl *swItem in allSegmentControlOutlet) {
        int selectedSegment = swItem.selectedSegmentIndex;
        swItem.segmentedControlStyle = UISegmentedControlStyleBar;
//didPass = YES;
        if (selectedSegment == -1) {

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Fill in all forms"
                                                            message:@"Please go back and fill in missing info"
                                                           delegate:nil
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil];

           // [swItem setTintColor:[UIColor redColor]];
            if (!alertShown) {
                [alert show];
                alertShown = YES;
                didPass = NO;
                return;
            }

        }


    }
    if (didPass) {
        [self performSegueWithIdentifier:@"ToHiring" sender:self];
        }
}

问题是我不知道该放在哪里,didPass = YES;因为它在哪里被注释掉,除非循环中的最后一项被填满,否则它会起作用。或者也许有更好的方法来检查我不知道的集合中的所有值。

4

2 回答 2

1

我知道这个问题已经得到解答,但这里有一种更简洁的方法来达到同样的目的:

// Check all controls and get the minimum selectedIndex
NSNumber *minIndex = [yourCollection valueForKeyPath:@"@min.selectedSegmentIndex"];
if ([minIndex isEqual:@(UISegmentedControlNoSegment)]) {
    // At least one control is unselected
}
于 2013-07-08T12:27:34.530 回答
0

在方法的开头设置didPass = YES(在 for 循环之前)。

然后遍历您的 outletCollection。一旦你找到一个未点击的元素,就将 didPass 设置为 NO。

于 2013-07-08T12:06:22.040 回答