Цель C: Добавление действия на массив кнопок

Я новичок в Objective-C, кто-нибудь может помочь мне здесь? Я пытаюсь сделать карусель кнопки, но я этого не сделал.

Что я получил, это просто отображение всех кнопок при загрузке, и все. Я не могу добавить действие для каждой кнопки, я имею в виду их пометку.

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

Вот мой код:

- (void)loadView { [super loadView]; self.view.backgroundColor = [UIColor grayColor]; mainHolder = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"feat.png"]]; [mainHolder setUserInteractionEnabled:YES]; [mainHolder setFrame: CGRectMake(0, 0, 1024, 768)]; [self.view addSubview: mainHolder]; header = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"header.png"]]; [header setFrame:CGRectMake(0, 0, 1024, 50)]; [header setUserInteractionEnabled:YES]; [mainHolder addSubview:header]; // The items to be displayed in the carousel items = [NSArray arrayWithObjects: [UIImage imageNamed:@"picOne.png"], [UIImage imageNamed:@"picTwo.png"], [UIImage imageNamed:@"picThree.png"], [UIImage imageNamed:@"picFour.png"], [UIImage imageNamed:@"picFive.png"], [UIImage imageNamed:@"picSix.png"], [UIImage imageNamed:@"picSeven.png"], [UIImage imageNamed:@"picEight.png"], [UIImage imageNamed:@"picNine.png"], [UIImage imageNamed:@"picTen.png"], [UIImage imageNamed:@"picEleven.png"], nil]; // Initialize and configure the carousel carousel = [[iCarousel alloc] initWithFrame:self.view.bounds]; carousel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; carousel.type = iCarouselTypeCoverFlow2; carousel.dataSource = self; [self.view addSubview:carousel]; } #pragma mark - #pragma mark iCarousel methods - (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel { return [items count]; } - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index { UIImage *image = [items objectAtIndex:index]; imageChoices = [[[UIButton alloc] initWithFrame:CGRectMake(253, 150, 518, 389)] autorelease]; [imageChoices setBackgroundImage:image forState:UIControlStateNormal]; [imageChoices setUserInteractionEnabled:YES]; [imageChoices setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; imageChoices.titleLabel.font = [imageChoices.titleLabel.font fontWithSize:50]; [imageChoices addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; imageChoices.tag=index; return imageChoices; } - (void)buttonTapped:(UIButton *)sender { //I don't know how to tag each button here. switch(sender.tag){ case 1:{ NSLog(@"Photo1"); } break; case 2:{ NSLog(@"Photo2"); } case 3:{ NSLog(@"Photo3"); } break; case 4:{ NSLog(@"Photo4"); } break; case 5:{ NSLog(@"Photo5"); } break; } } 

Реализовать целевой метод следующим образом:

 - (IBAction)buttonTapped:(id)sender { switch(sender.tag){ case 1:{ NSLog(@"Photo1"); break; } case 2:{ NSLog(@"Photo2"); break; } case 3:{ NSLog(@"Photo3"); break; } case 4:{ NSLog(@"Photo4"); break; } case 5:{ NSLog(@"Photo5"); break; } default:{ NSLog(@"Default"); break; } } } По - (IBAction)buttonTapped:(id)sender { switch(sender.tag){ case 1:{ NSLog(@"Photo1"); break; } case 2:{ NSLog(@"Photo2"); break; } case 3:{ NSLog(@"Photo3"); break; } case 4:{ NSLog(@"Photo4"); break; } case 5:{ NSLog(@"Photo5"); break; } default:{ NSLog(@"Default"); break; } } } 
 - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index { UIImage *image = [items objectAtIndex:index]; //Instead of adding single UIButton, add separate for each carousel. UIButton *imageChoices = [[[UIButton alloc] initWithFrame:CGRectMake(253, 150, 518, 389)] autorelease]; [imageChoices setBackgroundImage:image forState:UIControlStateNormal]; [imageChoices setUserInteractionEnabled:YES]; [imageChoices setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; imageChoices.titleLabel.font = [imageChoices.titleLabel.font fontWithSize:50]; [imageChoices addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; imageChoices.tag=index; //print index, that it should be unique or not? return imageChoices; } 

Попробуй это

 - (void)buttonTapped:(UIButton *)sender { UIButton *sendButton = (UIButton *)sender; //No need of this! We already have sender switch(sendButton.tag) { //....... } } 

добавить carousel.delegate = self; В вашем методе loadview и затем выполните

 - (void)carousel:(iCarousel *)crsl didSelectItemAtIndex:(NSInteger)index { } 
  • iPhone - Карусель
  • iCarousel Linear Type начинается от центра
  • Как загрузить представление iCarousel из раскадровки или xib?
  • Позиция iCarousel по центру (iOS)
  • ScrollDirection в iCarousel?
  • Проблема с использованием AsyncImageView в icarousel в iOS
  • iOS: Ограничения на невыбранном виде в iCarousel
  • EXC_BAD_ACCESS (код = 2 или код 1), когда действие кнопки вызова
  • Проблема с созданием Webview и Button на каждом iCarousal View
  • Хорошо ли использовать вид ViewCntroller в icarousel?
  • Вызовите segue из подвью, созданного iCarousel
  • Давайте будем гением компьютера.