2014-06-10 3 views
0

В пользовательской ячейке uitableviewcell сегментированный элемент управления создается при создании строки. Каждая строка является вопросом в форме. В зависимости от типа вопроса сегментированный элемент управления может иметь разные ответы. В ссылке UISegmentedControl он перечисляет только метод init, позволяющий одновременно устанавливать все сегменты. Есть ли лучший способ, чем использовать удаление и вставку для обновления сегмента, чтобы иметь соответствующие сегменты?Сегментированные сегменты управления сегментом iOS после создания

В инициализации пользовательского элемента UITableView ячейки имеет

_answerSegmented = [[UISegmentedControl alloc] init]; 
[_answerSegmented addTarget:self action:@selector(answerChanged:) forControlEvents:UIControlEventValueChanged]; 
_answerSegmented.backgroundColor = [UIColor columnHeaderBackground]; 
[self addSubview:_answerSegmented]; 

Ни для кого не позже, что он знает, что сегменты должны быть

NSMutableArray *answers = [NSMutableArray arrayWithObjects:@"IN", @"OUT", nil]; 
if (_question.noItem.boolValue) { 
    [answers addObject:@"N/O"]; 
} 
if (_question.naItem.boolValue) { 
    [answers addObject:@"N/A"]; 
} 
_answerSegmented.segments = answers; // <---- this line gives a compile error 

ответ

3

Нет, нет лучшего способа. Если все сегментированные элементы управления имеют одинаковое количество сегментов, тогда создайте элемент управления с таким количеством сегментов. Затем просто используйте setTitle:forSegmentAtIndex: для изменения названия каждого сегмента по одному.

Если число может измениться, используйте removeAllSegments и insertSegmentWithTitle:atIndex:animated:.

Или просто создайте новый сегментированный элемент управления и удалите старый каждый раз.

+0

thx. Количество элементов динамическое, поэтому их необходимо удалить и повторно вставить. –