2012-05-09 3 views
1

У меня есть пользовательская ячейка в TableView, и в ячейке есть кнопка. Когда я выбираю ячейку, фон становится синим, и кнопка исчезает. Есть ли способ предотвратить это?Как я могу предотвратить исчезновение кнопки при выборе ячейки TableView?

cellForRowAtIndexPath как это -

- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) 
{ 
    cell = [[MyTableCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
            reuseIdentifier:CellIdentifier]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

} 
Search *current = [self.retrievedTweets objectAtIndex:indexPath.row]; 
cell.textLabel.text = current.text; 
cell.textLabel.font = [UIFont systemFontOfSize:15.0]; 
cell.textLabel.numberOfLines = 2; 
cell.detailTextLabel.text = current.name; 
cell.imageView.image = current.userImage; 


btnUncheck =[[UIButton alloc] initWithFrame:CGRectMake(400, 35, 20, 20)]; 


btnUncheck.backgroundColor = [UIColor redColor]; 
btnUncheck.layer.cornerRadius = 10; 
btnUncheck.hidden =NO; 
btnUncheck.tag=indexPath.row; 
//[btnUncheck addTarget:self action:@selector(didSelectRowAtIndexPath:) forControlEvents:UIControlEventTouchUpInside]; 

[cell.contentView addSubview:btnUncheck]; 
return cell; 
} 
+0

Как вы добавили кнопку? – jrturton

+0

'btnUncheck = [[UIButton alloc] initWithFrame: CGRectMake (400, 35, 20, 20)]; btnUncheck.backgroundColor = [UIColor redColor]; btnUncheck.layer.cornerRadius = 10; [cell.contentView addSubview: btnUncheck]; ' –

ответ

1

использование пользовательских изображений для выбранной ячейки таблицы. или попробуйте с изображениями кнопок.

+0

Я попробовал - btnUncheck.highlighted = NO; и btnUncheck.adjustsImageWhenHighlighted = NO; Ничего не работает. –

+0

Я спрашиваю о выбранном виде таблицы. Вы можете установить собственное изображение, а не синее изображение. – Mangesh

+0

Да! Я тоже это сделал.Переопределите метод setSelected. '(void) setSelected: (BOOL) выбранный анимированный: (BOOL) анимированный { [super setSelected: выбранный анимированный: анимированный]; if ([self.accessoryView isKindOfClass: [UIButton class]]) { UIButton * кнопка = (UIButton *) self.accessoryView; [[кнопка imageView] setHighlighted: NO]; } } ' –

0

паста ниже линии в вашем Tableview Делегат Метод

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{

///// your code /////////// 
cell.selectionStyle=UITableViewCellSelectionStyleNone; 
//// your code//////// 

}

здесь ваш синий Backgound не будет отображаться ..

+0

Дело в том, что я хочу, чтобы выбор произошел, у меня есть кнопка в ячейке, и на выбор я хочу, чтобы это было. –

+0

просто попробуйте этот код его работы, но см. Ваш cellIdentifier не должен nil –

+0

Да, я пробовал. Код пропускает синий цвет, но кнопка все еще отсутствует, не появляется. –

0

Что вы можете сделать это:

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

Надеется, что это помогает

Кроме того, если вы уже осуществили это, что еще у вас есть в этом методе делегата?

+0

Используя ваш код, появляется синий цвет, а затем исчезает. После этого снова появляется кнопка. Мне нужно, синий цвет, чтобы быть там с кнопкой. Это означает, что кнопка также должна быть включена в выборку. Выбор не должен уходить. –

+0

Какой код у вас внутри целевого метода вашей исчезающей кнопки и метод didSelectRowAtIndexPath? Можете ли вы опубликовать их на свой вопрос? – RileyE

0

Вместо этой линии:

btnUncheck = [[UIButton alloc] initWithFrame:CGRectMake(400, 35, 20, 20)]; 

использование:

btnUncheck = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 
[btnUncheck setFrame:CGRectMake(400, 35, 20, 20)]; 
+0

Извините! Это не работает. –

+0

Если вы можете поделиться своим методом cellForRowAtIndexPath, мы можем помочь лучше. – ugur

+0

Поделитесь с вопросом! –

0

Создать "обычай" вид с цветом фона четким и установить на него.

UIView* vista=[[[UIView alloc] init] autorelease]; 
vista.backgroundColor=[UIColor clearColor]; 
cell.selectedBackgroundView=vista; 
0

Способ исправить это право заключается в создании пользовательской ячейки, которую вы затем добавляете в редактор xib.

Итак, в редакторе xib добавьте элемент «UITableViewCell». Затем добавьте кнопку в элемент этой ячейки в редакторе xib. Затем вы приложите вашу пользовательскую ячейку таблицы в соответствующем файле .m здесь:

  • (UITableViewCell *) Tableview: (UITableView *) Tableview cellForRowAtIndexPath: (NSIndexPath *) indexPath

I попробовали это только с таблицей с одной строкой, а пользовательская ячейка привязана как свойство от xib к файлу .h, который имеет представление таблицы. Изюминка есть и просто вытаскивает кнопку (по-прежнему просматривается). Для этого больше работать с большим количеством строк. Вам нужно будет загрузить пользовательский xib-файл utableviewcell и динамически распределить вашу настраиваемую ячейку для работы.

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