2014-01-19 2 views
1

У меня есть коллекция [не customviewview], и я хотел бы показать предупреждение, нажав кнопку. Но действие кнопки не определяет действие, которое является моим кодом:Cant detect button action collectionview

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
    { 

     UICollectionViewCell *cell = [ self.collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; 

     NSArray *sectionArr=[self.ClassesArr objectAtIndex:indexPath.section]; 

     NSDictionary *data = [sectionArr objectAtIndex:indexPath.row]; 
     UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
     btn.frame = CGRectMake(54, 25, 15, 15); 
     [btn addTarget:self action:@selector(subCateBtnAction:) forControlEvents:UIControlEventTouchUpInside]; 
     [cell addSubview:btn]; 

    } 


// the button action 
    -(IBAction)subCateBtnAction:(UIButton *)btn 
    { 
     NSArray *sectionArr=[self.ClassesArr objectAtIndex:sectionindex]; 

     NSDictionary *data = [sectionArr objectAtIndex:btn.tag]; 
     NSString *name = [data objectForKey:@"nombreTarifa"]; 
     UIAlertView *Notpermitted=[[UIAlertView alloc] initWithTitle:@"" 
                  message:name 
                  delegate:nil 
                cancelButtonTitle:@"OK" 
                otherButtonTitles:nil]; 
     [Notpermitted show]; 

    } 

В чем проблема?

+0

http://stackoverflow.com/questions/13757762/getting-button-action-uicollectionview -cell Возможно, это поможет вам – NeoJiang

ответ

1

Не выглядит, как вы добавили кнопку в ячейку или возвращается в клетку, попробуйте следующее:

[cell addSubview:btn]; 
return cell; 

НО вы понимаете UICollectionView имеет метод делегата для выбора? collectionView:didSelectItemAtIndexPath:

+0

Да. но проблема, когда я добавляю collectionView: didSelectItemAtIndexPath и я нажимаю кнопку, приложение рушится? Другая деталь заключается в том, что представление коллекции является одним из подзаголовков. – santa

1

woah, вы никогда не хотите добавлять такую ​​кнопку в свой делегатский метод cellForItemAtIndexPath:, КОГДА-ЛИБО! создайте пользовательский вид ячеек и добавьте в него кнопку, затем создайте экземпляры вашей кнопки в этом коде

Затем проверьте, что вы выбираете метод выбора вашей кнопки. Вы можете добавить в него инструкцию NSLog для проверки способа вызова метода. Также вы должны использовать метод делегата DidSelectItem для обнаружения касаний. Вы упомянули, что ваш код сбой, когда вы пытались реализовать метод делегата didSelectItem, это не повод, чтобы избежать исправления проблемы и реализации кода выбора в другом месте. Исправьте свой сбой и внесите его должным образом. Сообщите нам, что происходит при сбое, когда вы пытаетесь реализовать метод делегата didSelectItem, чтобы мы могли помочь вам дальше.

Update 1 Восстановите свое перо и нужен ответ в следующем post. Это относится к вашей ячейке, являющейся представлением привет, а не UICOllectionView, что, скорее всего, является причиной того, почему ваше содержимое не принимает события касания.

+1

Мне стало очевидно, что ОП мало осведомлен о Obj-C и должен освежиться. В коде содержится много ошибок. Возьмите это посоветование и * «Исправьте свой сбой и реализуйте его правильно чувак» * –

+0

CollectionCell * cell = [self.collectionView dequeueReusableCellWithReuseIdentifier: CellIdentifier forIndexPath: indexPath]; NSArray * sectionArr = [self.ClassesArr objectAtIndex: indexPath.section]; NSDictionary * данные = [разделArr objectAtIndex: indexPath.row]; [cell.img addTarget: self action: @selector (subCateBtnAction :) forControlEvents: UIControlEventTouchUpInside]; возвратная ячейка; } in collectionView: cellForItemAtIndexPath, мне понравилось это, но я не мог видеть никакой информации в моем представлении коллекции. – santa

+0

[self.collectionView registerClass: [Класс CollectionCell] forCellWithReuseIdentifier: @ "CollectionCell"]; , а также in viewdidload, я зарегистрировал пользовательскую ячейку, но не получил результат: S – santa