Я отображаюсь в группе tableview
содержание проанализировано от XML. Я хочу отключить событие щелчка на нем (я не должен мочь нажать его вообще), таблица содержит две группы. Я хочу отключить выбор для первой группы только, но не второй группы. Нажатие на первую строку второй группы navigates
к моей трубе player view
.
Как я могу сделать просто определенные группы или строки можно выбрать?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section!=0)
if(indexPath.row==0)
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:tubeUrl]];
}
Спасибо.
Вам просто нужно поместить этот код в cellForRowAtIndexPath
Чтобы отключить свойство выделения ячейки: (при нажатии на ячейку)
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Чтобы включить возможность выбора (касания) ячейки: (нажатие на ячейку)
// Default style
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
// Gray style
cell.selectionStyle = UITableViewCellSelectionStyleGray;
Обратите внимание, что ячейка с selectionStyle = UITableViewCellSelectionStyleNone;
по-прежнему вызовет пользовательский интерфейс didSelectRowAtIndexPath
при прикосновении пользователем. Чтобы этого избежать, сделайте, как предложено ниже, и установите.
cell.userInteractionEnabled = NO;
вместо этого. Также обратите внимание, что вы можете установить cell.textLabel.enabled = NO;
, чтобы этот элемент был серым.
Вы перехватываете выборки с помощью этих методов источника данных.
– tableView:willSelectRowAtIndexPath:
– tableView:didSelectRowAtIndexPath:
– tableView:willDeselectRowAtIndexPath:
– tableView:didDeselectRowAtIndexPath:
В этих методах вы проверяете, является ли выбранная строка той, которую вы хотите выбрать. Если да, примите меры, если нет - ничего не делайте.
К сожалению, вы не можете отключить выделение только для одного раздела. Это вся таблица или ничего.
Однако вы можете установить для свойства selectionStyle
ячеек таблицы значение UITableViewCellSelectionStyleNone
. Я считаю, что это сделает выбор невидимым. В сочетании с вышеуказанными методами, которые должны сделать ячейки полностью инертными с точки зрения пользователя.
Если у вас есть таблица, в которой можно выбрать только некоторые строки, важно, чтобы ячейки выбираемых строк визуально отличались от невыбираемых строк. По умолчанию это можно сделать с помощью дополнительной кнопки «шеврон».
Как бы вы это ни делали, вы не хотите, чтобы ваши пользователи пытались выбрать строки и думали, что приложение работает неправильно, потому что строка ничего не делает.
Если вы хотите сделать строку (или подмножество строк) невыбираемой, реализуйте UITableViewDelegate
метод -tableView:willSelectRowAtIndexPath:
(также упомянутый TechZen). Если indexPath
не должен быть выбираемым, возвращается nil
, иначе возвращается indexPath
. Чтобы получить поведение выбора по умолчанию, вы просто возвращаете indexPath
, переданный вашему делегату
, но вы также можете изменить выбор строки, возвращая другой indexPath
.
пример:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// rows in section 0 should not be selectable
if ( indexPath.section == 0 ) return nil;
// first 3 rows in any section should not be selectable
if ( indexPath.row <= 2 ) return nil;
// By default, allow row to be selected
return indexPath;
}