IBAction связан с кнопкой, но нуждается в пустоте

У меня есть IBAction и он связан с кнопкой в ​​.xib. Но для действия нужен этот код;

- (void) reportScore: (int64_t) score forCategory: (NSString*) category 
{
    GKScore *scoreReporter = [[GKScore alloc] initWithCategory:category];   
    scoreReporter.value = counter;
    [scoreReporter reportScoreWithCompletionHandler: ^(NSError *error) 
     {
         [self callDelegateOnMainThread: @selector(scoreReported:) withArg: NULL error: error];

         NSLog(@"Nice: %d", counter);  

     }];
}

Есть ли способ соединить мою кнопку с пустотой? Или что-то вроде того?

- (IBAction) subScore {
//data
}

person Blazer    schedule 07.01.2012    source источник
comment
void и IBAction — это одно и то же. IBAction — это просто маркер для файла заголовка, чтобы сообщить IB, что действие может быть связано с методом.   -  person Jason Coco    schedule 07.01.2012


Ответы (1)


IBActionIBOutlet) просто используются, чтобы сообщить XCode Interface Builder(IB) о существовании функции. Если вы хотите использовать void, хорошо, но вы не получите функцию, показанную в Interface Builder.

IBAction – это специальное ключевое слово, которое используется только для указания Xcode(Interface Builder) рассматривать метод как действие для соединений целевого действия. IBAction определяется как void.

IBOutlet – это специальное ключевое слово, которое используется только для указания Xcode(Interface Builder) рассматривать объект как выход. На самом деле он определен как ничего, поэтому он не влияет на время компиляции.

Вы можете установить функцию (которая определяется с помощью void, и обратите внимание, что IBAction тоже в порядке, но здесь это не нужно) для цели вашей кнопки следующим образом:

[yourButton addTarget:self action:@selector(yourButtonFunction:) forControlEvents:UIControlEventTouchUpInside];

Как правило, если вы создаете свой код программно (без использования XCode Interface Builder), вам больше не нужны IBOutlet или IBAction. ;)

person Kjuly    schedule 07.01.2012