如何做到全部,
这是第一次在网站上发布,所以我认为我没有全部关注 格式和协议正确。
我的应用程序有一个包含问题列表的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);
}
答案 0 :(得分:0)
如果您有问题列表,可以使用Segemnted控件数组。您可能有一个按钮,“获取结果”,因此在按下时,您将遍历所有分段控件并检查所选索引(是/否 - 0/1)。
现在,在上面的代码中,为每个分段控件的状态更改调用processQuestions。如果用户保留默认值,则不会将结果添加到答案数组中。