-6
- (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 的新手。为什么我没有看到这个按钮?点击后如何隐藏按钮?我需要框架内的按钮。

4

3 回答 3

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;
}

或者通过接口生成器(首选),最简单的方法是使用接口文件中的 IBAction 声明在 Xcode 中实际定义处理程序/动作(在 @end 语句之前添加声明)。然后将动作附加到按钮

于 2013-08-07T12:53:08.927 回答
0

您的代码中有几个问题。

  1. testButton作为子视图添加到self.myView. 然后你躲起来self.myView。因此,既不self.myview可见,也不可见其子视图。
  2. 您对本地变量和实例变量感到困惑。显然有一个实例变量和属性myView。否则你无法使用self.myView. 并且你声明了一个局部变量myView,它与实例变量不同。这可能完全没问题。但我有一种胆量感觉你这样做不是故意的。在添加子视图的时间点,您self.myView很可能为零。甚至子视图self.testButton也可能为零。这将编译文件并正常执行,但实际上没有发生任何事情。
  3. 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; 
于 2013-08-07T13:11:10.253 回答
0
  • 您正在添加 self.testButton 而不是创建的 testButton。

    [self.myView addSubview:testButton];
    
  • 您没有将 myView 分配给您的财产。

    [self.view addSubview:myView]; self.myView = myView;
    
  • 删除 self.myView.hidden = YES;

另一句话:您通常应该尽早调用 super 。否则,超类可能会干扰您自己的实现。

于 2013-08-07T13:10:54.043 回答