Reputation: 233
I'm trying to put my current working code present in view controller to a helper class. But getting "unrecognized selector sent to class" error.
Previous View Controller:
UIImage *buttonImg = [[UIImage imageNamed:@"img-settings"]imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UIButton *buttonSetting = [UIButton buttonWithType:UIButtonTypeCustom];
[buttonSetting setTintColor:[ColorHelper hiltiDirtyPurple]];
[buttonSetting setImage:buttonImg forState:UIControlStateNormal];
[buttonSetting setFrame:CGRectMake(20, 15, 24, 24)];
[buttonSetting addTarget:self action:@selector(settingPage) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *settingbarItem = [[UIBarButtonItem alloc] initWithCustomView:buttonSetting];
- (void) settingPage
{
[self performSegueWithIdentifier:@"settingPage" sender:nil];
}
Modified View Controller:
#import "IconsHelper.h"
UIBarButtonItem *settingbarItem = [IconsHelper setSettingButtonForSelector:@selector(settingPage) target:[ListVC self]];
In IconsHelper.m
+(UIBarButtonItem *)setSettingButtonForSelector:(SEL)selector target:(Class) classObject{
UIImage *buttonImg = [[UIImage imageNamed:@"img-settings"]imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UIButton *buttonSetting = [UIButton buttonWithType:UIButtonTypeCustom];
[buttonSetting setTintColor:[ColorHelper hiltiDirtyPurple]];
[buttonSetting setImage:buttonImg forState:UIControlStateNormal];
[buttonSetting setFrame:CGRectMake(20, 15, 24, 24)];
[buttonSetting addTarget:classObject action:selector forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *settingbarItem = [[UIBarButtonItem alloc] initWithCustomView:buttonSetting];
return settingbarItem;
}
Upvotes: 1
Views: 251
Reputation: 74
I think you should try these
- (void)settingPage
{
[self performSegueWithIdentifier:@"settingPage" sender:self];
}
issue might be occur through you have written
- (void) settingPage // here you have single space before method name your should write method like
- (void)settingPage
{
}
Hopefully you resolved your issue. Thanks Nirav Zalavadia
Upvotes: 0
Reputation: 308
Please try this update method in IconsHelper Class
Updated:
+(UIBarButtonItem *)setSettingButtonForSelector:(SEL)selector target:(UIViewController *)viewController{
UIImage *buttonImg = [[UIImage imageNamed:@"img-settings"]imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
UIButton *buttonSetting = [UIButton buttonWithType:UIButtonTypeCustom];
[buttonSetting setTintColor:[ColorHelper hiltiDirtyPurple]];
[buttonSetting setImage:buttonImg forState:UIControlStateNormal];
[buttonSetting setFrame:CGRectMake(20, 15, 24, 24)];
[buttonSetting addTarget:viewController action:selector forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *settingbarItem = [[UIBarButtonItem alloc] initWithCustomView:buttonSetting];
return settingbarItem;
Rather than providing "Class" object, try updating parameter type to "UIViewController".
Also, try calling this method with following:
UIBarButtonItem *settingbarItem = [IconsHelper setSettingButtonForSelector:@selector(settingPage) target:self];
Let me know it is working.
Upvotes: 2