1

Я прошел через гид от компании Apple «Your first iOS app»UIButton removeFromSuperview

и теперь у меня есть кнопка, которая не заявленная в 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]; но я не понимаю, как это сделать с помощью кнопки. Может кто-нибудь помочь?

ответ

1

Вы должны добавить 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

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

Альтернативно .. Вы можете установить метку для кнопки в Interface Builder ..

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

Смежные вопросы