Skip to content

Instantly share code, notes, and snippets.

@shaps80
Last active December 18, 2015 14:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shaps80/5797749 to your computer and use it in GitHub Desktop.
Save shaps80/5797749 to your computer and use it in GitHub Desktop.
I've often found myself a more convenient way to add a simple barButtonItem to a navigation or tool bar, so I created this nice little subclass.
#import <UIKit/UIKit.h>
@class SLBarButtonItem;
typedef void (^SLBarButtonItemCompletionBlock)(SLBarButtonItem *sender);
@interface SLBarButtonItem : UIBarButtonItem
+(SLBarButtonItem *)barButtonSystemItem:(UIBarButtonSystemItem)systemItem;
+(SLBarButtonItem *)barButtonWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style;
+(SLBarButtonItem *)barButtonWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style;
+(SLBarButtonItem *)barButtonWithImage:(UIImage *)image landscapeImagePhone:(UIImage *)landscapeImagePhone style:(UIBarButtonItemStyle)style;
@property (nonatomic, copy) SLBarButtonItemCompletionBlock completionBlock;
@end
#import "SLBarButtonItem.h"
@implementation SLBarButtonItem
-(void)actionForBarButtonItem
{
if (_completionBlock)
_completionBlock(self);
}
+(SLBarButtonItem *)barButtonWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style
{
SLBarButtonItem *item = [[SLBarButtonItem alloc] initWithImage:image style:style target:nil action:nil];
item.target = item;
item.action = @selector(actionForBarButtonItem);
return item;
}
+(SLBarButtonItem *)barButtonWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style
{
SLBarButtonItem *item = [[SLBarButtonItem alloc] initWithTitle:title style:style target:nil action:nil];
item.target = item;
item.action = @selector(actionForBarButtonItem);
return item;
}
+(SLBarButtonItem *)barButtonWithImage:(UIImage *)image landscapeImagePhone:(UIImage *)landscapeImagePhone style:(UIBarButtonItemStyle)style
{
SLBarButtonItem *item = [[SLBarButtonItem alloc] initWithImage:image landscapeImagePhone:landscapeImagePhone style:style target:nil action:nil];
item.target = item;
item.action = @selector(actionForBarButtonItem);
return item;
}
+(SLBarButtonItem *)barButtonSystemItem:(UIBarButtonSystemItem)systemItem
{
SLBarButtonItem *item = [[SLBarButtonItem alloc] initWithBarButtonSystemItem:systemItem target:nil action:nil];
item.target = item;
item.action = @selector(actionForBarButtonItem);
return item;
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment