- (void)viewDidLoad{
int leftBorder = 80;
int topBorder = 160;
int width = 150;
int height = 50;
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(leftBorder, topBorder, width, height)];
myView.layer.cornerRadius = 5;
myView.backgroundColor = [UIColor redColor];
[self.view addSubview:myView];
UIButton *testButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
testButton.frame = CGRectMake(0, 0, 50, 50);
[testButton setTitle:@"testButton" forState:UIControlStateNormal];
[testButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.myView addSubview:self.testButton];
self.myView.hidden = YES;
[super viewDidLoad];
}
嗨,抱歉愚蠢的问题!我是xcode的新手。为什么我没有看到这个按钮?如何在点击后隐藏按钮?我需要框架内的按钮。
答案 0 :(得分:2)
简单删除self.myView.hidden = YES;
添加点击监听器,两个解决方案:
通过viewDidLoad中的代码:
- (void)viewDidLoad {
[super viewDidLoad];
[mybutton addTarget:self action:@selector(myButtonClick:) forControlEvents:(UIControlEvents)UIControlEventTouchDown];
}
- (void)myButtonClick:(id)sender {
myButton.hidden = YES;
}
或者通过接口Builder(首选),最简单的方法是使用接口文件中的IBAction声明在Xcode中实际定义处理程序/操作(在@end语句之前添加声明)。然后将操作附加到按钮
答案 1 :(得分:0)
您正在添加self.testButton而不是创建的testButton。
[self.myView addSubview:testButton];
您没有将myView分配给您的财产。
[self.view addSubview:myView]; self.myView = myView;
删除self.myView.hidden = YES;
另一句话: 你应该尽早打电话给超级。否则,超类可能会干扰您自己的实现。
答案 2 :(得分:0)
您的代码中存在多个问题。
testButton
作为子视图添加到self.myView
。然后你隐藏self.myView
。因此,self.myview
及其子视图都不可见。 myView
。否则你不能使用self.myView
。并声明一个局部变量myView
,它与实例变量不同。这可能完全没问题。但我有一种胆量,感觉你没有故意这样做。您添加子视图的时间点self.myView
可能为零。甚至子视图self.testButton
也可能是零。这将编译文件并执行正常但实际上没有任何事情发生。 我建议稍微更改一下代码,假设myView和testButton属于相应类型的属性:
self.myView = [[UIView alloc] initWithFrame:CGRectMake(leftBorder, topBorder, width, height)];
self.myView.layer.cornerRadius = 5;
self.myView.backgroundColor = [UIColor redColor];
[self.view addSubview:self.myView];
self.testButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.testButton.frame = CGRectMake(0, 0, 50, 50);
[self.testButton setTitle:@"testButton" forState:UIControlStateNormal];
[self.testButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[self.myView addSubview:self.testButton];
self.myView.hidden = NO;