Как показать тег кнопки? - PullRequest
0 голосов
/ 22 июля 2011

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

 - (void)loadView {
[super loadView];
self.view.backgroundColor = [UIColor redColor];
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
scroll.pagingEnabled = YES;
NSInteger numberOfViews = 33;
[btnMenu setTag:0 ];
for (int i = 1; i < numberOfViews; i++) {
    CGFloat yOrigin = i * self.view.frame.size.width;
    UIView *awesomeView = [[UIView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)];
    //awesomeView.backgroundColor = [UIColor colorWithRed:0.5/i green:0.5 blue:0.5 alpha:1];
    btnMenu = [UIButton buttonWithType:UIButtonTypeCustom];
    //NSData *data =UIImageJPEGRepresentation(, 1);
    [btnMenu setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"page-%d.jpg",i]] forState:UIControlStateNormal];
    CGRect frame = btnMenu.frame;
    frame.size.width=320;
    frame.size.height=460;
    frame.origin.x=0;
    frame.origin.y=0;
    btnMenu.frame=frame;
    [btnMenu setTag:i];
    btnMenu.alpha = 1;
    [btnMenu addTarget:self action:@selector(btnSelected:) forControlEvents:UIControlEventTouchUpInside];
    [awesomeView addSubview:btnMenu];

    [scroll addSubview:awesomeView];
    [awesomeView release];
}
scroll.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);
[self.view addSubview:scroll];
[scroll release];

}

-(IBAction)btnSelected:(id)sender{
switch (btnMenu.tag) {
        NSLog(@"%d",btnMenu.tag);

}} 

Ответы [ 5 ]

3 голосов
/ 22 июля 2011

попробуйте это:

-(IBAction)btnSelected:(id)sender{
  UIButton *button = (UIButton *)sender;
  int whichButton = button.tag;
  NSLog(@"Current TAG: %i", whichButton);
} 

EDIT:

вам действительно нужен метод как метод IBAction?

ты не можешь использовать его как пустое?

-(void)btnSelected:(id)sender{
  UIButton *button = (UIButton *)sender;
  int whichButton = button.tag;
  NSLog(@"Current TAG: %i", whichButton);
} 
1 голос
/ 22 июля 2011
-(IBAction)btnSelected:(id)sender{
    UIButton* btnMenu = (UIButton*)sender;
    switch (btnMenu.tag) {
    NSLog(@"%d",btnMenu.tag);

    }
} 
0 голосов
/ 22 июля 2011
-(IBAction)btnSelected:(id)sender{

UIButton *btnSelected = sender;

NSLog(@"%d",btnSelected.tag);
}

Вышеуказанный код работает для меня, и он печатает значение тега в журнале.Вы, должно быть, сделали что-то не так.

0 голосов
/ 22 июля 2011

При создании кнопки создайте ее локально (внутри цикла), иначе она будет содержать только последний тег.

totalNoOfImages=32;

as:

for(int i=0;i<totalNoOfImages;i++)
{   
    UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(i*50,0,45,44)] autorelease];       

    //SETTING TAG FOR IMAGE
    [button setTag:i];
    [button addTarget:self action:@selector(btnSelected:)forControlEvents:UIControlEventTouchDown];
    [scrollView addSubview:iconImageSlide];
}   

Следующий метод покажет тег:

- (void) btnSelected:(id)sender
{
    int btnId=[(UIButton *)sender tag];
    NSLog(@"btnTag= %d", ibtnId)
}
0 голосов
/ 22 июля 2011

попробуйте этот код в качестве метода действия

-(IBAction)btnSelected:(id)sender{
switch (sender.tag) {
    NSLog(@"%d",sender.tag);

}}

печатает тег выбранной кнопки.

TNQ

...