IBAction связан с кнопкой, но нужна пустота - PullRequest
0 голосов
/ 07 января 2012

У меня есть 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
}

1 Ответ

1 голос
/ 07 января 2012

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

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

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

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

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

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

...