使用selectedSegmentIndex切换语句

时间:2010-11-03 15:52:06

标签: iphone uisegmentedcontrol

如何做到全部,

这是第一次在网站上发布,所以我认为我没有全部关注 格式和协议正确。

我的应用程序有一个包含问题列表的UIView,以及一个名为“question_btn”的UISegmentedControl用于每个问题。 UISegmentedControl有2个段,第一个是NO答案,第二个是YES答案,对应每个问题。

每个“question_btn”单独调用 - (void)processQuestions {},但是当我点击每个“question_btn”时,只有最后一个被正确处理。之前的所有“question_btns”都调用了processQuestions方法,但是没有实现它的代码。

我的问题是UISegmentControl或switch语句,或两者兼而有之。

任何建议都将不胜感激。

按钮定义如下

 question_btn  = [[[UISegmentedControl alloc] initWithFrame:CGRectMake(QUESTION_BUTTON_XPOS, questionsButton_YPos, 80, 20)] autorelease]; 
 [question_btn insertSegmentWithTitle:@"No" atIndex:0 animated:NO];
 [question_btn insertSegmentWithTitle:@"Yes" atIndex:1 animated:NO];
 [question_btn setEnabled:YES forSegmentAtIndex:0];
 [question_btn setEnabled:YES forSegmentAtIndex:1];
 question_btn.segmentedControlStyle = UISegmentedControlStyleBar;
 question_btn.tintColor = [UIColor colorWithRed:200.0/255.0 green:200.0/255.0 blue:200.0/255.0 alpha:1.0];
 [question_btn addTarget:self action:@selector(processQuestions) forControlEvents:UIControlEventValueChanged]; 

以下是processQuestions

- (void) processQuestions
{
 //NSLog(@"QuestionsView processQuestions: Called");
 //Process the questions i.e. determine whether yes or no was the answer

     answersArray = [[NSMutableArray alloc] init]; 

     int selectedIndex; 

     selectedIndex = [question_btn selectedSegmentIndex];

     switch (selectedIndex)
     {
         case 0:

             NSLog(@"QuestionsView processQuestions: No answered");    

             break;

         case 1:    

             NSLog(@"QuestionsView processQuestions: Yes answered");    

             break;  
     } 

     [answersArray addObject:[NSNumber numberWithInt:selectedIndex]];

     NSLog(@"QuestionsView processQuestions: answersArray contains: %@",  answersArray);
}

以下是我如何使代码正确迭代并获取question_btn选择的索引值。这只是创建一个可变数组来保存question_btn对象的问题, 然后使用for循环为每个按钮设置所选索引值。 buttonsArray在我的createView方法中设置。

buttonsArray = [[NSMutableArray alloc] init];

- (void) processQuestions

{     // NSLog(@“QuestionsView processQuestions:Called”);

answersArray = [[NSMutableArray alloc] init];           

int selectedIndex;

for (int i = 0; i < numQuestions; i ++)
{   
    question_btn = (UISegmentedControl*)[buttonsArray objectAtIndex:i];     

    selectedIndex = [question_btn selectedSegmentIndex];

    switch (selectedIndex)
    {
        case 0:

            NSLog(@"QuestionsView processQuestions: No answered for question: %d", i + 1);              

            break;

        case 1:             

            NSLog(@"QuestionsView processQuestions: Yes answered for question: %d", i + 1);     


            break;      
    }   

    [answersArray addObject:[NSNumber numberWithInt:selectedIndex]];
}
    NSLog(@"QuestionsView processQuestions: answersArray contains: %@", answersArray);

}

1 个答案:

答案 0 :(得分:0)

如果您有问题列表,可以使用Segemnted控件数组。您可能有一个按钮,“获取结果”,因此在按下时,您将遍历所有分段控件并检查所选索引(是/否 - 0/1)。

现在,在上面的代码中,为每个分段控件的状态更改调用processQuestions。如果用户保留默认值,则不会将结果添加到答案数组中。