Как это сделать для всех,
Это первая публикация на сайте, поэтому я полагаю, что я не правильно следовал всем форматам и протоколам.
В моем приложении есть UIView, содержащийсписок вопросов и UISegmentedControl под названием «question_btn» для каждого вопроса.UISegmentedControl имеет 2 сегмента, первый для ответа «НЕТ», второй для ответа «ДА», соответствующий каждому вопросу.
Каждый «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];
Ниже приведен процессQuestions
- (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.Кнопки ArrayArray установлены в моем методе 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);
}