UIButton removeFromSuperview

时间:2012-03-06 10:46:36

标签: objective-c ios5 uiviewcontroller uibutton xcode-storyboard

我浏览了Apple“Your first iOS app

的指南

现在我有一个按钮,它没有在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

现在我可以使用[label removeFromSuperview]删除label(和textField);但我不明白如何用按钮做到这一点。有人可以帮忙吗?

2 个答案:

答案 0 :(得分: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];

另请注意,您链接的教程说:

  

操作方法中的sender参数指的是发送操作消息的对象(在本教程中,发件人是按钮)

因此,如果您想要在点击按钮时(changeGreeting:内)删除按钮,那么您就不需要IBOutlet,因为您已经在sender中引用了该按钮{1}}参数:

- (IBAction)changeGreeting:(id)sender
{
    UIButton *button = (UIButton *)sender;
    // ...
    [button removeFromSuperview];
    // ...
}

答案 1 :(得分:0)

您需要像控制器IBAction一样声明控制器中的按钮,这次将其声明为Outlet(IBoutlet)..这样您将在代码中获得它的引用。

或者 ..您可以在Interface Builder中为按钮设置标签 ..

然后使用viewWithTag:method

在代码中检索