UIButton removeFromSuperview - PullRequest
       29

UIButton removeFromSuperview

1 голос
/ 06 марта 2012

Я прошел руководство от Apple " Ваше первое приложение для iOS "

и теперь у меня есть кнопка, которая не объявлена ​​во ViewController:

@interface HelloWorldViewController : UIViewController <UITextFieldDelegate>
- (IBAction)changeGreeting:(id)sender;
@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet UILabel *label;
@property (copy, nonatomic) NSString *userName;
@end

Теперь я могу удалить метку (и textField), используя [label removeFromSuperview]; но я не понимаю, как это сделать с помощью кнопки. Может кто-нибудь помочь?

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Вы должны добавить IBOutlet к кнопке, как вы сделали для текстового поля и метки:

@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet UILabel *label;
@property (weak, nonatomic) IBOutlet UIButton *button; // Don't forget to link to this from Interface Builder
// ...

Затем вы можете удалить кнопку, используя:

[button removeFromSuperview];

Также обратите внимание, что учебник, на который вы ссылались, говорит:

Параметр отправителя в методе действия относится к объекту, который отправляет сообщение действия (в этом учебнике отправитель являетсякнопка) .

Так что если вы хотите удалить кнопку, когда она нажата (внутри changeGreeting:), тогда вам не нужен IBOutlet, потому что у вас уже есть ссылкана кнопку в параметре sender:

- (IBAction)changeGreeting:(id)sender
{
    UIButton *button = (UIButton *)sender;
    // ...
    [button removeFromSuperview];
    // ...
}
0 голосов
/ 06 марта 2012

Вам нужно объявить кнопку в контроллере, как вы сделали, как IBAction, и на этот раз объявить ее как выход (IBoutlet) .. таким образом, вы получите ее ссылку в коде.

В качестве альтернативы .. вы можете установить тег для кнопки в Интерфейсном Разработчике ..

, а затем получить код, используя viewWithTag: метод

...