以下方法无法识别 UIButton 选择器
Posted
技术标签:
【中文标题】以下方法无法识别 UIButton 选择器【英文标题】:UIButton selector not recognized by the following method 【发布时间】:2018-03-14 03:44:17 【问题描述】:我在选择器上声明了一个方法,并创建了一个同名的方法。然而,该方法说它无法识别。错误信息:
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
UIImage *btnImage = [UIImage imageNamed:@"ic_favorite_border_48pt.png"];
UIButton *heart = [UIButton buttonWithType:UIButtonTypeCustom];
// get the image size and apply it to the button frame
CGRect listButtonFrame = heart.frame;
listButtonFrame.size = btnImage.size;
heart.frame = listButtonFrame;
[heart setImage:btnImage forState:UIControlStateNormal];
[heart addTarget:self.navigationController.parentViewController
action:@selector(revealToggle:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *jobsButton =
[[UIBarButtonItem alloc] initWithCustomView:heart];
self.navigationItem.rightBarButtonItem = jobsButton;
-(void)revealToggle:(UIButton *)heart
【问题讨论】:
Objective-C 不支持嵌套方法。 【参考方案1】:您已将 revealToggle
方法放入您的 viewDidAppear
方法中。你不能那样做。把它移到外面。
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
UIImage *btnImage = [UIImage imageNamed:@"ic_favorite_border_48pt.png"];
UIButton *heart = [UIButton buttonWithType:UIButtonTypeCustom];
// get the image size and apply it to the button frame
CGRect listButtonFrame = heart.frame;
listButtonFrame.size = btnImage.size;
heart.frame = listButtonFrame;
[heart setImage:btnImage forState:UIControlStateNormal];
[heart addTarget:self
action:@selector(revealToggle:)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *jobsButton =
[[UIBarButtonItem alloc] initWithCustomView:heart];
self.navigationItem.rightBarButtonItem = jobsButton;
-(void)revealToggle:(UIButton *)heart
由于revealToggle
在同一个类中,您需要将self
作为目标传递。
【讨论】:
谢谢 rmaddy,你很敏锐。没想到我的方法在viewDidAppear里面,之前很疑惑。 我没看到 +1以上是关于以下方法无法识别 UIButton 选择器的主要内容,如果未能解决你的问题,请参考以下文章
导航栏中的 UIButton 无法识别 iOS 11 中的点击
解析 Facebook 登录未执行,PFDateFormatter 无法识别选择器
快速谓词导致错误无法识别选择器发送到实例 0x156c9580'