2013-08-07 5 views
-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. Почему я не видел эту кнопку? И как я могу скрыть кнопку после щелчка? Мне нужна кнопка внутри рамки.Невозможно увидеть кнопку

+3

Вы добавляете свою кнопку на 'myView', а затем скрывающие' myView' который содержит кнопку внутри него. –

+0

вы не видите его, потому что скрываете представление: self.myView.hidden = YES; – tadasz

+0

Еще один комментарий: вы используете 'int' для построения' CGRect', вместо этого вы должны использовать 'CGFloat'. – Pascal

ответ

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 (предпочтительно), Самый простой способ заключается в на самом деле определить обработчик/действие в Xcode, используя объявление IBAction в файле интерфейса (добавьте объявление непосредственно перед оператором @end). Затем приложите действие к кнопке

+0

Это правильно, но это само по себе не поможет. Он по-прежнему беспорядок с иварами и местными жителями. –

+0

Почему этот ответ был неприемлем? – Gomino

+0

@gomino Извините, я новичок в stackoverflow.Благодарим вас за полезный ответ. – user2652489

0
  • Вы добавляете self.testButton вместо созданного testButton.

    [self.myView addSubview:testButton]; 
    
  • Вы не назначили myView своей собственности.

    [self.view addSubview:myView]; self.myView = myView; 
    
  • удалить self.myView.hidden = YES;

Другое замечание: Обычно вы должны позвонить супер как можно раньше. В противном случае суперкласс может помешать вашей собственной реализации.

0

В коде есть несколько проблем.

  1. Вы добавили testButton в качестве подраздела self.myView. Затем вы скрываете self.myView. В результате не будет видно ни self.myview, ни его подсмотров.
  2. Вы путаетесь с локальными varialbles и экземплярами varialbes. По-видимому, существует переменная экземпляра и свойство myView. В противном случае вы не сможете использовать self.myView. И вы объявляете локальную переменную myView, которая не совпадает с переменной экземпляра. Это вполне может быть в порядке. Но у меня появилось чувство, что вы сделали это не намеренно. Ваш self.myView вполне может быть нулем в момент времени, когда вы добавляете subview. И даже subview self.testButton может быть nil. Это будет скомпилировать файл и выполнить штраф, но на самом деле ничего не происходит.
  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; 
Смежные вопросы