【问题标题】:UIButton removeFromSuperviewUIButton removeFromSuperview
【发布时间】:2012-03-06 10:46:36
【问题描述】:

我浏览了 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] 删除标签(和 textField);但我不明白如何使用按钮。有人可以帮忙吗?

【问题讨论】:

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


    【解决方案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];
    

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

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

    因此,如果您想在点击按钮时将其移除(在changeGreeting: 内),则不需要IBOutlet,因为您已经在sender 参数中引用了该按钮:

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

    【讨论】:

      【解决方案2】:

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

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

      然后使用viewWithTag:方法在代码中检索

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-01
        • 1970-01-01
        • 2018-01-21
        • 2012-08-13
        • 2021-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多