Сбой приложения при назначении нескольких весёлых аргументов динамической кнопке - PullRequest
0 голосов
/ 23 ноября 2010
for (int i=0;i<[tableDataSource count];i++) 
{
        NSDictionary *dict = [tableDataSource objectAtIndex:i];
        rowText = [dict objectForKey:@"title"];

        UIButton *btn = [UIButton buttonWithType: UIButtonTypeRoundedRect];
        [btn setTitle:rowText forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(myActionbtnText:) forControlEvents:UIControlEventTouchUpInside];
        btn.frame = CGRectMake(60,  40+2*(40*i), 200, 40);
        btn.alpha = 0.81;

        [self.view addSubview:btn];
}

Я получил ошибку при назначении действия динамической кнопке. Дано мое действие. Ниже описана процедура передачи объекта / параметра при возникновении события кнопки.

-(void) myAction:(NSString *)btnText; 
{
    NSLog(@"%@ Button Clicked",btnText);
}

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

В вашем решении несколько ошибок.

  1. UIButton не отвечает на addTarget:action:withObject:forControlEvents:, а скорее addTarget:action:forControlEvents.Вот почему ваше приложение падает.
  2. Селектор должен быть @selector(myAction:).Параметр не должен быть включен.
  3. Я уверен, что он все равно не будет работать, так как к моменту нажатия кнопки rowText выйдет из области видимости и больше не будет доступен.Вот почему вы должны использовать решение @MathieuF (просто убедитесь, что вы правильно указали селектор).
1 голос
/ 23 ноября 2010

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

for (int i=0;i<[tableDataSource count];i++)
{
    UIButton *btn = [UIButton buttonWithType: UIButtonTypeRoundedRect];
    [btn setTitle:rowText forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(myActionbtnText:) forControlEvents:UIControlEventTouchUpInside];
    btn.tag = i;
    btn.frame = CGRectMake(60,  40+2*(40*i), 200, 40);
    btn.alpha = 0.81;

    [self.view addSubview:btn];
}

-(void) myAction:(UIButton*)sender {
    NSDictionnary *dict = [tableDataSource objectAtIndex:sender.tag];
    NSString* rowText = (NSString*)[dict objectForKey:@"title"];
    NSLog(@"%@ Button Clicked",rowText);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...