Мне нужно изменить выбранный по умолчанию синий цвет в виде таблицы на какой-то пользовательский цвет. Есть ли способ сделать это. Помогите мнеНужно изменить цвет выбора вида таблицы
ответ
Лучший способ сделать это так:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"myCellId";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
UIView *v = [[[UIView alloc] init] autorelease];
v.backgroundColor = [UIColor redColor];
cell.selectedBackgroundView = v;
}
// Set up the cell...
cell.textLabel.text = @"foo";
return cell;
}
Соответствующая часть для вас инструкция cell.selectedBackgroundView = v;
. Вы можете заменить самый простой вид 'v' здесь любым видом, который вам нравится.
Zoran, я проверил, что этот подход работает для представлений в виде таблицы, но он не работает для моих сгруппированных. Любое обходное решение? Или вы можете это подтвердить? –
Это не зависит от типа табличного вида: я только что обнаружил, что он работает на некоторых простых таблицах и не на других простых таблицах. Все они используют пользовательские ячейки таблицы. –
Это работает только без пуха для просмотра столов. Для просмотра сгруппированных таблиц вам действительно нужно 4 вида для разных выбранных фонов; самый верхний, самый нижний, между двумя другими ячейками и отдельной ячейкой в группе. Затем возникает боль при обновлении, вы меняете количество строк в любом сегменте. Отправьте запрос функции на bugreport.apple.com, чтобы добавить свойство selectedBackgroundGradient для iPhone OS 4.0. – PeyloW
Я не думаю, что вы можете использовать собственный цвет. Тем не менее, вы можете использовать следующее свойство UITableViewCell
@property(nonatomic) UITableViewCellSelectionStyle selectionStyle
Стиль выбора является постоянным backgroundView, который определяет цвет ячейки при ее выборе. Значение по умолчанию - UITableViewCellSelectionStyleBlue. Начиная с
typedef enum {
UITableViewCellSelectionStyleNone,
UITableViewCellSelectionStyleBlue,
UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;
вы можете переключаться с синего на синий или на серый или на любой цвет.
Если вы подклассифицируете свой UITableViewCell, вы можете выделить любой цвет. – mahboudz
Как именно вы это делаете для пользовательских UITableViewCells, разработанных с IB или программно? Я имею в виду, есть ли какой-либо метод/свойство, позволяющий делать это БЕЗ повторения трюков, таких как помещение другого представления поверх ячейки? –
Могу ли вы отправить мне код для подкласса UITableViewCell и выделить его с помощью пользовательского цвета. пожалуйста. – smakstr
Другим способом сделать это было бы перемещение в новом виде по вашей ячейке с любым цветом, который вам нужен, и непрозрачностью 50%. Вы перемещаете этот вид в ячейку, когда вы получаете -setSelected: анимированный: вызов. Когда я говорю «move», вы можете всегда иметь представление поверх своей ячейки, но просто поверните скрытый бит и включите его, как вам нужно.
Я также столкнулся с этой проблемой при попытке создать пользовательские выбранные представления ячеек для сгруппированной ячейки. Я решил эту проблему, создав 3 типа изображений для верхней, средней и нижней части ячейки, предполагая, что будет средняя ячейка.
NSString *imageFile;
if (row == 0) {
imageFile = @"highlighted_cell_top.png";
} else if (row == ([registeredDetailsKeys count] - 1)) {
imageFile = @"highlighted_cell_bottom.png";
} else {
imageFile = @"highlighted_cell_middle.png";
}
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageFile]];
cell.selectedBackgroundView = imageView;
Возможно, есть более простой способ, но я доволен результатом.
Насколько я знаю, это именно так. См. Этот [учебник] (http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html). Вы забыли вариант «top_bottom» (когда только одна ячейка), вот и все. – Rich
Убедитесь, что после того, как вы заявляете в заголовке
@property(nonatomic) UITableViewCellSelectionStyle selectionStyle
Реализовать
cell.selectionStyle = UITableViewCellSelectionStyleGray
где UITableViewCellSelectionStyleGray
может быть UITableViewCellSelectionStyleNone
, UITableViewCellSelectionStyleBlue
, UITableViewCellSelectionStyleGray
.
Я думаю, что у вас были бы лучшие результаты, если бы вы добавили еще больше восклицательных знаков ... –