В методах действий iOS, включая методы IBAction, могут быть любые из следующих подписей (см. « Target-Action в UIKit »):
- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event
Если вы используете методподпись, которая принимает отправителя, то у вас есть доступ к объекту, который вызвал действие.Затем вы можете получить доступ к свойствам вызывающего объекта, включая его заголовок и тег.Вы также можете сравнить отправителя с указателями, которые у вас уже есть, на ваши кнопки, чтобы определить, какая кнопка является отправителем данного конкретного события.
Я предпочитаю сравнивать указатели, потому что считаю, что if (sender == self.nextPageButton)
легче понять и с меньшей вероятностью сломать, чем if (sender.tag == 4)
или if ([((UIButton *)sender).currentTitle isEqualToString:@"foo"])
.Просмотр тегов в IB ничего не говорит о том, что код предполагает, что они означают, и являются ли они важными или нет.Названия будут меняться по мере обновления пользовательского интерфейса или локализации приложения, и эти изменения также не должны требовать изменения кода.