添加操作以编程方式创建 UIButton
Posted
技术标签:
【中文标题】添加操作以编程方式创建 UIButton【英文标题】:Adding action to programatically created UIButton 【发布时间】:2013-08-27 23:21:31 【问题描述】:这是我的 ViewController.m 代码
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self addMyButton];
-(void)addMyButton
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
webView.tag=55;
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
[self.view addSubview:webView];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(aMethod:)
forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Close" forState:UIControlStateNormal];
button.frame = CGRectMake(80, 210, 160, 40);
[button addTarget:self action:@selector(close:) forControlEvents:UIControlEventTouchUpInside];
[webView addSubview:button];
- (IBAction)close:(id)sender
// [[self.view viewWithTag:55] removeFromSuperview];
- (void)didReceiveMemoryWarning
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
- (void)dealloc
[super dealloc];
@end
这里是 ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
- (IBAction)close:(id)sender;
@end
一切都很简单,但我不断收到此错误:
-[ViewController aMethod:]: 无法识别的选择器发送到实例 0x7141780 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[ViewController aMethod:]: unrecognized selector sent to instance 0x7141780”
非常莫名其妙!
【问题讨论】:
【参考方案1】:您需要在 ViewController 类中添加一个方法。
- (void)aMethod:(id)sender
【讨论】:
【参考方案2】:尽管很简单,ViewController
并没有实现 -aMethod:
。
我认为您错过了复制粘贴,您应该更改选择器。
[button addTarget:self
action:@selector(aMethod:)
forControlEvents:UIControlEventTouchDown];
将导致self
上的aMethod:
触发按钮上的触摸事件。
由于您还没有实现这样的方法,您会遇到崩溃。一点都不奇怪。
【讨论】:
【参考方案3】:[button addTarget:self action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(close:) forControlEvents:UIControlEventTouchUpInside];
您的代码清楚地表明您正在添加两个 target 。删除第一个
[button addTarget:self action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown];
并使用你的
- (IBAction)close:(id)sender;
您粘贴的有问题的代码将开始工作
【讨论】:
以上是关于添加操作以编程方式创建 UIButton的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式在Swift中添加UIBarButtonItem操作