2012-04-27 3 views
0

В моем приложении есть один UITableView. В ячейке таблицы размещаем две метки и одну кнопку. высота кнопки равна высоте (label1 + label2). они предназначены для отображения контента. и кнопка для действия. Здесь моя проблема заключается в том, что я не могу выполнить действие кнопки во всей части. при нажатии только часть работает.кнопка действия в ячейке UITableView

Вот код я привык размещать ярлыки и кнопки

artistButton = [[UIButton alloc] initWithFrame:CGRectMake(11.0, 6.0, 170.0, 50.0)]; 
artistButton.backgroundColor = [UIColor redColor]; 
[self.contentView bringSubviewToFront:artistButton]; 
[self.contentView addSubview:artistButton]; 

artistLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(11.0, 6.0, 170.0, 27.0)]; 
artistLabel1.textAlignment = UITextAlignmentLeft; 
artistLabel1.textColor = [UIColor colorWithRed:0.14 green:0.29 blue:0.42 alpha:1]; 
artistLabel1.font = [UIFont boldSystemFontOfSize:15.0]; 
artistLabel1.backgroundColor = [UIColor blueColor]; 
[self.contentView addSubview:artistLabel1]; 

artistLabel2 = [[UILabel alloc] initWithFrame:CGRectMake(11.0,20.0, 170.0, 27.0)]; 
artistLabel2.textAlignment = UITextAlignmentLeft; 
artistLabel2.textColor = [UIColor grayColor]; 
artistLabel2.font = [UIFont boldSystemFontOfSize:12.0]; 
artistLabel2.backgroundColor = [UIColor grayColor]; 
[self.contentView addSubview:artistLabel2]; 

любой может помочь или подсказать. Спасибо заранее.

+0

Может ли прозвать эту строку: «действие кнопки во всей части» – sandy

+0

вам нужна кнопка (это вызывает другое действие, чем касание самой ячейки). Вы должны использовать делегат tableView ('tableView: didSelectRowAtIndex:'). Если вам нужна кнопка, вы должны создать ее, используя '[UIButton buttonWithType: type]'. – calimarkus

+0

Похоже, этикетки покрывают рамку кнопки. Попробуйте установить содержание этих двух меток в качестве названия кнопки. '- (void) setTitle: (NSString *) title forState: (состояние UIControlState); '. Вы можете настроить свойства этой 'titleLabel', чтобы содержимое отображалось более чем в одной строке. –

ответ

2

Я нашел ответ на свой вопрос. Из-за размера кнопки и меток только она не работает. Теперь отрегулируйте ширину и длину кнопки и назовите ее рабочий тон. Спасибо всем.

0

Добавить Target действие на эту кнопку

artistButton = [[UIButton alloc] initWithFrame:CGRectMake(11.0, 6.0, 170.0, 50.0)]; 
artistButton.backgroundColor = [UIColor redColor]; 

[artistButton addTarget:self 
      action:@selector(ArtistAction) 
forControlEvents:UIControlEventTouchUpInSide]; 

[self.contentView bringSubviewToFront:artistButton]; 
[self.contentView addSubview:artistButton]; 


-(void)ArtistAction 
{ 
    NSLog("Test Artist Action"); 
} 
+0

am добавлен action тоже. но я поместил две метки. Но моя проблема - это некоторая часть, которую выполняет только действие. –

0

добавить одну строку перед UIButton декларации ..

artistButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

после этого вы можете инициализировать код UIButton.

0

Предположим, вы понимаете, что установленные вами кадры перекрываются. Вы звоните [self.contentView bringSubviewToFront:artistButton];, но вы добавляете кнопку в качестве подзаголовка после того, как она не будет иметь никакого эффекта. Также вы добавляете другие подпункты после добавления кнопки, и они будут помещены над вами.

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

0

Просто используйте для вашей камеры tableView:didSelectRowAtIndex: метод.

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