UITableView не выбрал выбор

Как установить UITableView по умолчанию без выбора? indexPath.row = -1 или что-то подобное?

Вот мой код для создания таблицы:

 UITableView* tblThisTable = [[UITableView alloc] initWithFrame:CGRectMake(elementX, elementY, elementW, elementH)]; tblThisTable.rowHeight = 30.0; tblThisTable.layer.borderColor = [colorManager setColor:51.0 :51.0 :51.0].CGColor; tblThisTable.layer.borderWidth = 1.0; tblThisTable.delegate = self; tblThisTable.dataSource = self; 

И моя реализация протоколов делегатов:

 #pragma mark - Table View Management - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return arrStates.count; } // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.textLabel.text = [arrStates objectAtIndex:indexPath.row]; cell.textLabel.textColor = [colorManager setColor:66.0 :66.0 :66.0]; cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:20.0]; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { strSelectedState = [arrStates objectAtIndex:indexPath.row]; } 

У меня есть класс диспетчера данных, где я проверяю значения пользовательских записей до их сохранения на plist. Вот код, относящийся к таблице (у меня есть таблица состояний):

 } else if ([[_arrAllElements objectAtIndex:i] isMemberOfClass:[UITableView class]]) { UITableView* tblThisTable = (UITableView*)[_arrAllElements objectAtIndex:i]; strElementKey = @"State"; int selectedRow = tblThisTable.indexPathForSelectedRow.row; if(selectedRow > -1) { strElementValue = [arrStates objectAtIndex:selectedRow]; } else { strElementValue = @"No Entry"; } 

Таким образом, если пользователь нажимает кнопку «Сохранить», не выбирая ничего в таблице, я все равно получаю значение 0 для выбранногоRow, но ничего не отображается как выбранное. Я думал о UISegementedControls, где вы можете установить их на -1, чтобы не было выбора. Стоит ли столик делать так же?

Как вы сохраняете строку? Если вы сохраняете NSInteger / int который может объяснить, почему он по умолчанию равен 0 .


Когда вы запрашиваете таблицу для indexPathForSelectedRow , вам нужно проверить, равен ли он nil прежде чем захватить свойство row ( row пути nil всегда будет равна 0 ). Этот обновленный код должен делать то, что вам нужно:

 NSIndexPath *selectedPath = tblThisTable.indexPathForSelectedRow; if (selectedPath != nil) { strElementValue = [arrStates objectAtIndex:selectedPath.row]; } else { strElementValue = @"No Entry"; } 

Поместите этот код в ваш .m-файл, и он отменит выбор выбранной строки.

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; } 

Решение ниже будет работать. Отредактировал свой код для создания ячейки:

 // Customize the appearance of table view cells. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; cell.selectionStyle=UITableViewCellSelectionStyleNone; } cell.textLabel.text = [arrStates objectAtIndex:indexPath.row]; cell.textLabel.textColor = [colorManager setColor:66.0 :66.0 :66.0]; cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:20.0]; return cell; } 

Я добавил строку:

 cell.selectionStyle = UITableViewCellSelectionStyleNone; 

Более подробную информацию можно найти здесь: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html

Если вы хотите, чтобы все UITableView по умолчанию не выбрали (прокрутка также не касается)

затем используйте свойство table view, которое –

 tableView.userInteractionEnabled=NO; 

И если вы хотите остановить выбор ячейки,

 cell.selectionStyle=UITableViewCellSelectionStyleNone; 

В Swift

 // IF tableview selected row let selectedIndexPath = tableView_Main.indexPathForSelectedRow if selectedIndexPath != nil { tableView_Main.deselectRowAtIndexPath(selectedIndexPath!, animated: true) } 
Interesting Posts
Давайте будем гением компьютера.