看不到按钮

时间:2013-08-07 12:44:20

标签: objective-c uiview uibutton

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

3 个答案:

答案 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)

您的代码中存在多个问题。

  1. 您将testButton作为子视图添加到self.myView。然后你隐藏self.myView。因此,self.myview及其子视图都不可见。
  2. 您对本地变量和实例变量感到困惑。显然有一个实例变量和属性myView。否则你不能使用self.myView。并声明一个局部变量myView,它与实例变量不同。这可能完全没问题。但我有一种胆量,感觉你没有故意这样做。您添加子视图的时间点self.myView可能为零。甚至子视图self.testButton也可能是零。这将编译文件并执行正常但实际上没有任何事情发生。
  3. 对于testButton也一样。
  4. 我建议稍微更改一下代码,假设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;