2013-11-29 3 views
1

Я получил это табличное представление с сегментированными элементами управления в каждой ячейке. Я получаю данные из моей базы данных, которые я вставляю в сегментированный элемент управления ячейками. Но как не выбрать сегмент? Если примечание найдено в базе данных, оно возвращает -1. Я пробовал: segmentedControl.selectedSegmentIndex = -1;, но не повезло. Похоже, что он устанавливает segmentedControl.selectedSegmentIndex = 0;, будет выбран сегмент курса с индексом 0 независимо от того, что (даже если я получу результат или нет). Смотрите скриншоты, чтобы понять :)Сегментный контроль в tableviewcell

Btw Я могу выбрать столько сегментов, сколько хочу в каждом сегментированном элементе управления. Почему это возможно? Будет ли другая проблема исправлять это? :)

СПАСИБО!

Мой код для создания ячеек:


UITableViewCell *cell = nil; 
    cell = [tableView dequeueReusableCellWithIdentifier:@"StateCell"]; 
    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseI dentifier:@"StateCell"]; 
    } 

    UIImage *correctImageGreen = [[UIImage imageNamed:@"green.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
    UIImage *correctImageGul = [[UIImage imageNamed:@"gul.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
    UIImage *correctImageRed = [[UIImage imageNamed:@"red.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

    NSArray *itemArray = [NSArray arrayWithObjects: correctImageGreen, correctImageGul, correctImageRed, nil]; 
    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray]; 

segmentedControl.frame = CGRectMake(308, 7, 150, 28); 

[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 

int newIndexPath = indexPath.row + 1; 
NSString *indexPathKey = [NSString stringWithFormat:@"%i", newIndexPath]; 


NSString *selectedState = [statefieldData valueForKey:[NSString stringWithFormat:@"StateField%@", indexPathKey]]; 
int selectedIndexInt = [selectedState intValue]; 

if (selectedIndexInt == -1) { 
    segmentedControl.selectedSegmentIndex = -1; 
} 
else { 
    segmentedControl.selectedSegmentIndex = selectedIndexInt; 
} 

[cell.contentView addSubview:segmentedControl]; 

cell.textLabel.text = [tableData objectAtIndex:indexPath.row]; 

cell.textLabel.textColor = [UIColor whiteColor]; 
cell.selectionStyle = UITableViewCellSelectionStyleNone; 
[self.tableView setBackgroundColor:[UIColor colorWithRed:37 green:37 blue:37 alpha:0]]; 
cell.backgroundColor = [UIColor clearColor]; 


return cell; 
[[self tableView] reloadData]; 


Screenshot of my problem

+0

Привет! Я думаю, что segmentedControl не может иметь выделенный сегмент – shinyuX

+0

Что? Сегментированные элементы управления предназначены для управления сегментами? Не было бы сегментированногоControl.selectedSegmentIndex = -1; если бы это было невозможно .. Если вы знаете, что мне нужно сделать, скажите. –

ответ

2

В документации говорится:

selectedSegmentIndex
Значение по умолчанию: UISegmentedControlNoSegment (без выбора сегмента), пока пользователь не коснется сегмента. Установите для этого свойства значение -1, чтобы отключить текущий выбор.

Если вы устанавливаете -1 (UISegmentedControlNoSegment), и это не отменив сегмент, то есть что-то еще вы делаете неправильно, что мы не можем видеть.

+0

Что это может быть? Im объявляет все, что связано с сегментированным элементом управления в приведенном выше коде :( –

+0

Обеспечиваете ли вы, чтобы ячейки вашего представления таблицы были переработаны должным образом? То есть вы внедрили '-prepareForReuse' в свой подкласс ячеек и обеспечили, чтобы его состояние сбрасывается? – Jasarien

+0

Я вижу, что вы не используете подкласс ячейки, и каждый раз, когда возвращается ячейка, вы добавляете сегментированный элемент управления в качестве нового subview. При повторном использовании ячеек это может привести к тому, что ваша ячейка будет иметь несколько экземпляры сегментированного элемента управления в представлении одновременно. – Jasarien

Смежные вопросы