Я вращаюсь по кругу, чтобы лучше всего реализовать это, поэтому, может быть, вы мне поможете:
Как я могу сделать это, когда UIButton реагирует на селектор highlightImage
, он также может установить желаемый challengeId = индекс моего appDelegate.availableArray
?
В моем методе cellForRowAtIndexPath
я создаю UIScrollView
с кнопками:
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, tv.frame.size.width, 78)];
[scrollView setContentSize:CGSizeMake(500, 78)];
[self createScrollButtons];
[[cell contentView] addSubview:scrollView];
Мой createScrollButtons
зацикливает и создает кнопки в scrollView
и, таким образом, циклически изменяет количество элементов в моем availableArray
- (void) createScrollButtons
{
SuperHeroGameAppDelegate *appDelegate = (SuperHeroGameAppDelegate *)[[UIApplication sharedApplication] delegate];
int x = 0;
int y = 0;
NSLog(@"Challenge array = %@",appDelegate.availableArray);
for (int i = 0; i < [appDelegate.availableArray count]; i++) {
NSLog(@" ID= %d", [[[appDelegate.availableArray objectAtIndex:i]valueForKey:@"id"] intValue]);
[self createButtonAtX:x AndY:y withChallenge:[[appDelegate.availableArray objectAtIndex:i]valueForKey:@"id"]];
x += 90;
}
}
createButtonAtX andY withChallenge is called for each element in
availableArray`их правильное расположение вдоль scrollView.
- (void)createButtonAtX:(int) x AndY:(int) y withChallenge:(id)challengeId
{
CGRect buttonRect = CGRectMake(x, y, 80, 78);
ChallengeButton *capeButton = [ChallengeButton buttonWithType:UIButtonTypeCustom];
[capeButton setBackgroundColor:[UIColor clearColor]];
[capeButton setFrame:buttonRect];
[capeButton addTarget:self action:@selector(highlightImage:) forControlEvents:UIControlEventTouchUpInside];
UIImage *capeImage = [UIImage imageNamed:@"CapePower.png"];
[capeButton setBackgroundImage:capeImage forState:UIControlStateNormal];
[scrollView addSubview: capeButton];
}
highlightImage
вызывается как селектор каждой кнопки, чтобы определить, какая кнопка нажата.(и в идеале с элементом из availableArray
, с которым связана эта кнопка) ... У меня есть подклассы UIButton и добавлено значение int
, чтобы можно было вызывать [sender setChallengeId:]
- (void) highlightImage:(id)sender
{
if([sender isSelected] == NO){
[sender setSelected:YES];
[sender setChallengeId:selectedChallenge];
NSLog(@"sender = %d",[sender challengeId]);
UIImage *selectedImage = [UIImage imageNamed:@"PowerBarHand.png"];
[sender setBackgroundImage:selectedImage forState:UIControlStateSelected];
}
else {
[sender setBackgroundImage:[UIImage imageNamed:@"HandstandPower.png"] forState:UIControlStateNormal];
[sender setSelected:NO];
selectedChallenge = 0;
}
}
Моя проблемаЯ не могу понять, как получить элемент appDelegate availableArray
В мое highlightImage, так как [capeButton addTarget:challengeId action:@selector(highlightImage:) forControlEvents:UIControlEventTouchUpInside]
UIButton не позволит мне передать challengeId из цикла ранее в потоке.
Я могу передатьлюбое целочисленное значение для setChallengeId, и оно обрабатывается, как ожидается.Мне просто нужно получить значение appDelegate.availableArray
id
из цикла.
Любое направление было бы здорово! :)) 1042 *