UIBarButtonItem+blocks.m 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // UIBarButtonItem+blocks.m
  3. //
  4. // Created by Julian Weinert on 04.08.14.
  5. // Copyright (c) 2014 Julian Weinert Softwareentwicklung. All rights reserved.
  6. //
  7. // This program is free software: you can redistribute it and/or modify
  8. // it under the terms of the GNU General Public License as published by
  9. // the Free Software Foundation, either version 2 of the License, or
  10. // (at your option) any later version.
  11. //
  12. // This program is distributed in the hope that it will be useful,
  13. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. // GNU General Public License for more details.
  16. //
  17. // You should have received a copy of the GNU General Public License
  18. // along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. #import "UIBarButtonItem+blocks.h"
  20. #import <objc/runtime.h>
  21. @implementation UIBarButtonItem (blocks)
  22. - (id)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style actionHandler:(UIBarButtonItemActionHandler)actionHandler {
  23. if (self = [self initWithImage:image style:style target:self action:@selector(performActionHandler)]) {
  24. [self setActionHandler:actionHandler];
  25. }
  26. return self;
  27. }
  28. - (id)initWithImage:(UIImage *)image landscapeImagePhone:(UIImage *)landscapeImagePhone style:(UIBarButtonItemStyle)style actionHandler:(UIBarButtonItemActionHandler)actionHandler {
  29. if (self = [self initWithImage:image landscapeImagePhone:landscapeImagePhone style:style target:self action:@selector(performActionHandler)]) {
  30. [self setActionHandler:actionHandler];
  31. }
  32. return self;
  33. }
  34. - (id)initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style actionHandler:(UIBarButtonItemActionHandler)actionHandler {
  35. if (self = [self initWithTitle:title style:style target:self action:@selector(performActionHandler)]) {
  36. [self setActionHandler:actionHandler];
  37. }
  38. return self;
  39. }
  40. - (id)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem actionHandler:(UIBarButtonItemActionHandler)actionHandler {
  41. if (self = [self initWithBarButtonSystemItem:systemItem target:self action:@selector(performActionHandler)]) {
  42. [self setActionHandler:actionHandler];
  43. }
  44. return self;
  45. }
  46. - (void)setActionHandler:(UIBarButtonItemActionHandler)actionHandler {
  47. objc_setAssociatedObject(self, "actionHandler", actionHandler, OBJC_ASSOCIATION_COPY_NONATOMIC);
  48. }
  49. - (void)performActionHandler {
  50. UIBarButtonItemActionHandler actionHandler = objc_getAssociatedObject(self, "actionHandler");
  51. actionHandler();
  52. }
  53. @end